在 Swift 中检测 UIImageView 触摸
Posted
技术标签:
【中文标题】在 Swift 中检测 UIImageView 触摸【英文标题】:Detect UIImageView Touch in Swift 【发布时间】:2015-06-22 22:29:15 【问题描述】:当UIImageView
被触摸时,您将如何检测并执行操作?
这是我到目前为止的代码:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
var touch: UITouch = UITouch()
if touch.view == profileImage
println("image touched")
【问题讨论】:
确保userInteractionEnabled
设置为 true
。我相信false
默认是UIImageView
。
@AdamPro13 它仍然不适用于我上面的代码。
【参考方案1】:
您可以通过添加UITapGestureRecognizer 来检测对UIImageView
的触摸。
请务必注意,默认情况下,UIImageView
的 isUserInteractionEnabled
属性设置为 false,因此您必须在情节提要中或以编程方式显式设置它。
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")
【讨论】:
【参考方案2】:您可以使用 Interface Builder 或在代码中(如您所愿)将 UITapGestureRecognizer
放入您的 UIImageView
中,我更喜欢第一个。然后你可以在你的UIImageView
中放置一个@IBAction
并处理水龙头,不要忘记在Interface Builder 或代码中将UserInteractionEnabled
设置为true
。
@IBAction func imageTapped(sender: AnyObject)
println("Image Tapped.")
希望对你有所帮助。
【讨论】:
如何在“imageTapped”函数中传递额外的参数?【参考方案3】:斯威夫特 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")
【讨论】:
需要在viewDidLoad()方法中添加profileImage.isUserInteractionEnabled = true。以上是关于在 Swift 中检测 UIImageView 触摸的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中检测对 UITableViewCell 的 UIImageView 的触摸?
我如何在 Swift iOS 中检测 UIImageView 中的更改图像