在Swift中检测UIImageView Touch

Ste*_*rck 13 uiimageview ios swift

UIImageView触摸时你会如何检测并运行动作?这是我到目前为止的代码:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    var touch: UITouch = UITouch()
    if touch.view == profileImage {
        println("image touched")
    }
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*ose 20

您可以UIImageView通过向其添加UITapGestureRecognizer来检测a上的触摸.

重要的是要注意,默认情况下,a UIImageViewisUserInteractionEnabled属性设置为false,因此您必须在storyboard中或以编程方式显式设置它.


override func viewDidLoad() {
    super.viewDidLoad()

    imageView.isUserInteractionEnabled = true
    imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imageTapped)))
}

@objc private func imageTapped(_ recognizer: UITapGestureRecognizer) {
    print("image tapped")
}
Run Code Online (Sandbox Code Playgroud)


Vic*_*ler 18

您可以UITapGestureRecognizerUIImageView使用Interface Builder或代码中(根据需要)放入内部,我更喜欢第一个.然后,你可以把一个@IBAction和处理你里面的水龙头UIImageView,别忘了设置UserInteractionEnabled,以true在Interface Builder或代码.

@IBAction func imageTapped(sender: AnyObject) {
    println("Image Tapped.")
}
Run Code Online (Sandbox Code Playgroud)

我希望这对你有帮助.


小智 5

迅捷3

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch:UITouch = touches.first!
        if touch.view == profileImage {
    println("image touched")
}

}


override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch:UITouch = touches.first!
        if touch.view == profileImage {
    println("image released")
}

}
Run Code Online (Sandbox Code Playgroud)