- 更新日: 2016年4月11日
- Swift & iOS
Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
iOS/Swift でタップやスワイプなどのアクションに対応するイベント処理の実装を書いてみました。UITapGestureRecognizer, UISwipeGestureRecognizer などを使う。UISwipeGestureRecognizer ではスワイプの方向を指定することで、どちらの方向へのスワイプかを識別できます。
— 環境 —
Xcode 7.0
Swift 2.0
Mac OS X Yosemite 10.10.5
UITapGestureRecognizer, UISwipeGestureRecognizer を使って実装する
以下の例では、1本指でのタップ、下から上へのスワイプ(Up)、上から下へのスワイプの(Down) の3通りの操作に対する処理を書いてみました。
UITapGestureRecognizer クラス等に action としてハンドラー名(イベントを処理するメソッド名)を指定して、同名のハンドラを実装するだけですので、比較的簡単に実装できます。viewDidLoad() の中で、各々のジェスチャーに対するオブジェクトを作成して、ビューに addGestureRecognizer() で追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
class SomeViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // single tap let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTap:") self.view.addGestureRecognizer(tapGesture) // single swipe up let swipeUpGesture: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "handleSwipeUp:") swipeUpGesture.numberOfTouchesRequired = 1 // number of fingers swipeUpGesture.direction = UISwipeGestureRecognizerDirection.Up self.view.addGestureRecognizer(swipeUpGesture) // single swipe down let swipeDownGesture: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "handleSwipeDown:") swipeDownGesture.numberOfTouchesRequired = 1 swipeDownGesture.direction = UISwipeGestureRecognizerDirection.Down self.view.addGestureRecognizer(swipeDownGesture) } // MARK: - Gesture Handlers func handleTap(sender: UITapGestureRecognizer){ print("Tapped!") } func handleSwipeUp(sender: UITapGestureRecognizer){ print("Swiped up!") } func handleSwipeDown(sender: UITapGestureRecognizer){ print("Swiped down!") } } |
UISwipeGestureRecognizer の例では、numberOfTouchesRequired(操作する指の数)と direction(スワイプの方向)を指定しています。
各々ジェスチャーのハンドラとして、テスト用にそれぞれの動作の文字列をコンソールに出力するだけの簡単な実装を作成しました。タップしたら「Tapped!」、上スワイプで「Swiped up!」、下スワイプで「Swiped down!」が Xcode 上コンソールに出力されればOKです。
最初ハンドラーのメソッドに private を付けていたらエラーになった。private を外したところ正常に動作させることができました。
- – 参考リンク –
- [Swift] UIGestureRecognizer タップの認識
- Swiftの調べモノ | @wai_ya.com
- Swiftでジェスチャーの追加 – Qiita
- iOS スワイプ機能を実装する。 | App Camp
- Swift & iOS の関連記事
- WKWebView/UIWebViewでウェブページが真っ白
- Unityのインストールと初期設定
- WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
- WKWebViewでtarget=”_blank”のリンクを開く(Swift)
- 初回公開日: 2015年12月10日
Leave Your Message!