Swiftで遊ぼう! - 686 - Interface Builder, FaceView controller, Gestures, Multiple MVCs 6
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
講義5はジェスチャーの実装で終了なので、さらっと流します。
Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U
昨日のピンチジェスチャーはfaceViewが保持しているプロパティ、scaleをfaceViewが持つメソッド、changeScale()を使って制御しました。
次はModelが持っているプロパティを制御します。しかし、Modelにはノータッチで制御しなければならないので、targetもactionもFaceViewControllerにコードします。
Swipeジェスチャーの実装
ピンチジェスチャーと同様にfaceViewプロパティのプロパティ・オブザーバーに加えます。
@IBOutlet weak var faceView: FaceView! { didSet { faceView.addGestureRecognizer(UIPinchGestureRecognizer( target: faceView, action: #selector(faceView.changeScale(_:)) )) let happierSwipeGestureRecognizer = UISwipeGestureRecognizer( target: self, action: #selector(self.increaseHappiness) ) happierSwipeGestureRecognizer.direction = .Up faceView.addGestureRecognizer(happierSwipeGestureRecognizer) upDateUI() } }
メソッドも同様にFaceViewControllerにコードします。
func increaseHappiness() { expression.mouth = expression.mouth.happierMouth() }
たったこれだけです。ここでenumのメソッドを使ってrawValueを辿ってexpression.mouthのレベルを変更しています。これでスワイプ・アップが実装されたので同様にスワイプ・ダウンを実装します。
@IBOutlet weak var faceView: FaceView! { didSet { faceView.addGestureRecognizer(UIPinchGestureRecognizer( target: faceView, action: #selector(faceView.changeScale(_:)) )) let happierSwipeGestureRecognizer = UISwipeGestureRecognizer( target: self, action: #selector(self.increaseHappiness) ) happierSwipeGestureRecognizer.direction = .Up faceView.addGestureRecognizer(happierSwipeGestureRecognizer) let sadderSwipeGestureRecognizer = UISwipeGestureRecognizer( target: self, action: #selector(self.decreaseHappiness) ) sadderSwipeGestureRecognizer.direction = .Down faceView.addGestureRecognizer(sadderSwipeGestureRecognizer) upDateUI() } }
そして最後にメソッドを加えます。
func decreaseHappiness() { expression.mouth = expression.mouth.sadderMouth() }
これでコードによるUIGestureRecognizerの実装法を学びました。
今日はここまで。