LoginSignup
6
4

More than 5 years have passed since last update.

swift3で追加したviewのフリックイベントを拾ってみた

Last updated at Posted at 2016-11-20

swiftがバージョン3になり、各シンタックスがバージョン2からかなり変更があったので
各シンタックスの確認がてら動かしてみました。

追加したsubViewのフリックイベントの拾い方

viewに対するユーザーイベントはバージョン2同様でGestureRecognizer系を
使用すればイベントを拾える模様

今回はフリックイベントを拾いたいので、以下を使用しました。
・UIPanGestureRecognizer
(iOSの世界ではフリックはPanとい名称らしい)

以下がソースになります。

ViewController.swift

    override func viewDidLoad() {
        super.viewDidLoad()

        // create gesturView(subView)
        let gesturView:UIView = UIView(frame: self.view.bounds)
        gesturView.backgroundColor = UIColor.black

        // create GesturRecognizer(pan = flick)
        let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panGesture(sender:)))

        // add GesturRecognizer to subview
        gesturView.addGestureRecognizer(panGestureRecognizer)

        self.view.addSubview(gesturView)
    }

    func panGesture(sender:UIPanGestureRecognizer) {
        switch (sender.state) {
        case .began:
            print("pan start")
            break
        case .ended:
            print("pan end")
            let translation = sender.translation(in: sender.view)
            print(translation)
            break
        default:
            break
        }
    }

subViewとGesturRecognizerの生成

//create gesturView(subView)
の部分でsuperViewに追加するsubViewを生成してます。

// create GesturRecognizer(pan = flick)
の部分で生成したsubViewに追加するUIPanGestureRecognizerを生成しています。
ここのselectorに渡しているfunctionがフリックイベント発生時に
発火するfuncitonとなります。
ここではpanGestureが発火するように渡しています。
(シンタックス微妙に変更になったようです。selector -> #selector)

// add GesturRecognizer to subview
の部分でsubViewにGesturRecognizer(Pan)を追加してます。
その後subViewをsuperViewであるself.viewに追加しています。

UIPanGestureRecognizerのイベント振り分け

イベント発火時にselector functionに渡されたUIPanGestureRecognizerは
stateというプロパティを持っているので、そのstateをハンドリングすることで、
処理が分けられます。各stateは以下

UIGestureRecognizer

今回はフリック開始時、終了時にprintだけするものですが、
フリック中等のイベントも拾えるので、色々と処理分けすると面白いものが実装できそうです。

swift3になって様々なシンタックスが変更になっているが、
やはりまだまだ書籍等でも整理しきれていないので、ドンドン触って差分を吸収していくのが大事なんでしょうね。

以上です。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4