【Swift】ImageViewにタップアクションを追加

 

完成図

 

f:id:nekokichi_yos2:20181231000103p:plain

 

解説

 

ImageViewにButtonのようなタップアクションを追加するには、

  1. ImageViewのisUserIntaractionEnabledをtrueにする(StoryBoardからも変更可)
  2. ImageViewにUI部品のTapGestureRecognizerを追加
  3. TapGestureRecognizerを@IBActionで紐付け
  4. タップ時に実行したい処理を@IBAction内に記述

 

コードでTapGestureRecognizerを実装する方法もあるのだが、なぜか実装できない。

(viewDidLoad内に記述されているコード)

 

ソースコード

import UIKit

class addTapGesture: UIViewController,UIGestureRecognizerDelegate {
    
    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
//        //tapGestureのインスタンス
//        let gesture = UIGestureRecognizer(target: self, action: #selector(addTapGesture.alert(_:)))
//        //tapGestureのデリゲート
//        gesture.delegate = self
//        //imageview全体にtapGestureを追加
//        self.imageView.addGestureRecognizer(gesture)

        //ImageViewのタップ認識をONにする
        imageView.isUserInteractionEnabled = true
    }
    
    @IBAction func imageTapGesture(_ sender: Any) {
        //アラートで通知
        let alert = UIAlertController(title: "TapGestureが作動しました", message: "タップされたよ", preferredStyle: .alert)
        let dismiss = UIAlertAction(title: "OK", style: .cancel, handler: nil)
        alert.addAction(dismiss)
        self.present(alert, animated: true, completion: nil)
    }

}