kitoko552.memo

kitoko552のメモ

Swiftでviewに対するタップを検知する

UIButtonのタップ検知は簡単ですが、UIButton以外のviewに対するタップイベントを取得したいときがあります。 そういったときは、以下を行います。

  1. タップイベントを取得したいviewのuserInteractionEnabledをtrueにする。
  2. タップイベントを取得したいviewにaddGestureRecognizerを設定する。

以下、実装例です。

class ViewController: UIViewController {
    @IBOutlet weak var sampleImageView1: UIImageView!
    @IBOutlet weak var sampleImageView2: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        sampleImageView1.userInteractionEnabled = true
        sampleImageView2.userInteractionEnabled = true
        
        sampleImageView1.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "imageTapped:"))
        sampleImageView2.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "imageTapped:"))
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    func imageTapped(sender: UITapGestureRecognizer) {
        println(sender)
    }
}

userInteractionEnabledはXcode上でも設定可能です。 セレクターのコロン(:)を付け忘れないように注意してください。