画像をタップしたときに処理を走らせたいということはよくあると思います。
昔の自分は、UIImageViewの上に透明のUIButtonを配置してタップ判定を取得していましたが、もっといいやり方があります。
UIImageViewのタップ判定を取得する方法
今回は2パターンの実装方法を紹介していきたいと思います。
コードで実装する方法
addGestureRecognizer
でタップ判定をつける方法です。
UIImageView
をStoryboardに配置し、紐付けます。
@IBOutlet weak var imageView: UIImageView!
@objc
でタップした時の関数を作ります。
@objc func imageViewTapped(_ sender: UITapGestureRecognizer) { print("タップ") }
ViewDidLoad()
内で、imageView
のisUserInteractionEnabled
をtrue
にし、imageView
にタップした時に、STEP2で作った関数を#selector
で呼び出します。
imageView.isUserInteractionEnabled = true imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageViewTapped(_:))))
import UIKit class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() imageView.isUserInteractionEnabled = true imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageViewTapped(_:)))) } @objc func imageViewTapped(_ sender: UITapGestureRecognizer) { print("タップ") } }
これで、ImageViewのタップ判定が取得できました。
Storyboardで実装する方法
こちらの方が簡単です。Tap Gesture Recognizer
というオブジェクトを使うだけですので。
UIImageView
を配置し、わかりやすいように適当な画像を置いておきます。
Tap Gesture Recognizer
というオブジェクトをUIImageView
の上に配置します。
この時、左のメニューの下の方に、Tap Gesture Recognizer
が追加されていることを確認してください。
①ImageViewを選択
② (Show The Attributes inspector)をクリック
③User Interaction EnabledのチェックをONにする
あとはUIButton
みたいに、Tap Gesture Recognizer
をIBAction
で紐付けるだけです。
紐付けたIBAction内に確認するためにprint("タップ")
と記述しておきましょう。
@IBAction func imageViewTapped(_ sender: Any) { print("タップ") }
これで、ImageViewのタップ判定が取得できました。
パターン①よりもシンプルで簡単だと思います。
参考文献