【Swift4/ストリーボード無し】UILabelにタップイベントを追加する方法

 

UIButtonがタップされたときに、何かしたいなってのもあるけど、UILabelの方が使い勝手が良いときもある。

本来ならUIButtonで実装するべきなんだろうけど。

ストリーボード無しのプログラミングのみでの実装方法となります。

  • Swift version 4.2.1
  • Xcode Version 10.1

 

メインストリーボード無しでUILabelをタップできるようにする

class ViewController: UIViewController {

    let sampleUILabel:UILabel   = UILabel()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = .white
        
        self.sampleUILabel.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
        self.sampleUILabel.text = "Hello World!"
        // uilabelをタップできるように
        sampleUILabel.isUserInteractionEnabled = true
        // uilabelに追加するためのtapgestureインスタンスを生成
        let gesture = UITapGestureRecognizer(
            target: self,
            action: #selector(self.uiLabelTapEvent(_:))
        )
        // 生成したインスタンスをuilabelにadd
        sampleUILabel.addGestureRecognizer(gesture)

        self.view.addSubview(self.sampleUILabel)
    }
    // uilabelがタップされたときに動く関数
    @objc func uiLabelTapEvent(_ sender:UITapGestureRecognizer) {
        print("tapped uilabel")
    }    
}
以上!
SHARE