[swift]ボタン以外もタップ出来るようにするUITapGestureRecognizer

2016.08.20
uiTapGestureReconfnizerコードベースの記事のアイキャッチ

こんにちは、プログラマーの@Yuuです。

UIButtonにはボタンをタップされた時の処理を簡単に書くことが出来ますが、UIViewをタップされた時の処理は簡単に実装する事が出来ません。

UIViewやLabelに対してタップされた事を判定させるためには「UITapGestureRecognizer」というものを使用する必要があります。

公式サイト↓
UITapGestureRecognizer Class Reference

ちなみに「UITapGestureRecognizer」はジェスチャー全般を取り扱う事が出来る「UIGestureRecognizer」を継承したクラスになります。
「UIGestureRecognizer」を使った場合は以下のようなアクションに対応させる事が出来ます。

  • ピンチ
  • パン
  • スワイプ
  • ローテート(回転)
  • ロングプレス(長押し)
  • エッジ

パンはドラックのこと。
エッジは画面の左端をスワイプすることで前の画面に戻れたりするアレです。
(´-`).。oO(「前の画面に戻れたりするアレ」ていう以外になんて説明すればいいんだろう・・)

今回はコードベースで「UITapGestureRecognizer」を使用する方法を解説します。
ピンチ・パンなどのアクションの実装するための「UIGestureRecognizer」はまた他の記事でご紹介しますね。

2016.11.13追記
8種類のUIGestureRecognizerの記事を追加しました!
Swiftで使う場合、storyboard使う場合の2記事あるので、良ければ参考にして下さい。

今回の解説を行う環境は以下になります。

  • OS:OS X El Capitan10.11.5
  • Xcode:7.3.1
  • Swift:2.2

スポンサーリンク

Viewをタップ出来るようにする

viewをタップされたらログに「タップされました」と表示しつつ、画面全体の背景色を青・緑に点滅するようにします。

プロジェクトの用意

SingleApplicationでプロジェクトを作成します。

ViewController.swiftを以下のように変更します。

9行目のタップを定義する方法はSwift2.2以降の書き方です。

Swift2.2以前は
let tap = UITapGestureRecognizer(target: self, action: Selector("viewTap:"))
と書く必要があったため、「""」のメソッド名をタイプミスしても気付かなかったわけですが、Swift2.2以降はタイプミスをすると以下のように警告が出てくれるので便利ですね!

エラーが表示される

12行目で最初から配置されているviewに対してタップされた時のアクションを登録しています。
例えばこれをUIImageViewで書く場合は

13行目のように書けばimageViewもタップする事が出来るようになります。

そしてこれを実際に実行すると

viewをタップ出来るようにしたgif

このようにviewをタップして反応するようになりました!(๑•̀ㅂ•́)و✧

もしここまで試して反応がなかった場合は以下の記事も参考にして下さい。

あとがき

viewやimageをタップされた時に何かしらアクションを実行したい!という事は結構あるので、UITapGestureRecognizerは意外と使う機会が多い気がします。

今回はコードベースでUITapGestureRecognizerを使えるようにしましたが、次はStoryboardから実行出来るようにするやり方を書こうと思います。

ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧

uiTapGestureReconfnizerコードベースの記事のアイキャッチ

この記事が気に入ったらいいね!
して最新情報をチェックしよう!

スポンサーリンク