Did*_*dia 51 uigesturerecognizer ios swift
在UIImageView我的子类初始化后,我有以下代码行:
self.userInteractionEnabled = true
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "handleTap:"))
Run Code Online (Sandbox Code Playgroud)
我创建了必要的相关功能:
func handleTap(gestureRecognizer: UITapGestureRecognizer) {
print("In handler")
}
Run Code Online (Sandbox Code Playgroud)
在点击有问题的视图时,"处理程序从未打印到控制台".然后我删除了处理函数,看看编译器是否会抱怨丢失的函数.它没有.
我很难过.我真的很感激任何光明人都可以放弃这一点.
更新:我的课实际上是一个UIImageView相反的UIView
Sco*_*ter 120
我正在使用UITapGestureRecognizer我放置在UILabel使用故事板上.
为了实现这一点,我还必须UILabel在故事板的Attributes Inspector中标记为"User Interaction Enabled"的块中放置一个复选标记.
Did*_*dia 15
在仔细梳理我的代码后,我发现了答案.
其中一个父视图是在没有提供的情况下创建的 frame:
虽然这是一个非常愚蠢的错误,可以保证删除这些问题,但是其他人在将来也会遇到同样的问题......
Sur*_*raj 14
试试这个
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.view.userInteractionEnabled = true
var tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
self.view.addGestureRecognizer(tapGesture)
}
func handleTap(sender : UIView) {
println("Tap Gesture recognized")
}
Run Code Online (Sandbox Code Playgroud)
除了其他答案之外,这可以通过将手势识别器添加到多个视图来引起.手势识别器仅适用于单一视图.
参考:https://stackoverflow.com/a/5567684/6543020
我在程序化视图中遇到了这个问题。
我的带有手势识别器的 UIView 有 .isUserInteractionEnabled = true,但在我为其父视图设置 .isUserInteractionEnabled = true 之前,它没有响应点击。
很可能你添加UIGestureRecognizer错误的地方.这是UIView来自的工作样本storyboard.如果您UIView动态创建,那么您应该将此初始化放在正确的构造函数中.
class TestView: UIView
{
override func awakeFromNib()
{
self.userInteractionEnabled = true
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "handleTap:"))
}
func handleTap(gestureRecognizer: UITapGestureRecognizer)
{
println("Here")
}
}
Run Code Online (Sandbox Code Playgroud)
经过多次反复试验,我找到了解决此问题的方法。所以有两个解决方案二这个
1.要么添加GestureRecognizerin viewDidLoad() 并转
userInteractionEnabled=true
2.如果使用计算属性,请使用lazy var而不是letto 属性。
lazy var profileImageView: UIImageView = {
let iv = UIImageView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
iv.image = #imageLiteral(resourceName: "gameofthrones_splash")
iv.contentMode = .scaleAspectFill
iv.translatesAutoresizingMaskIntoConstraints = false
iv.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView)))
iv.isUserInteractionEnabled = true
return iv
}()
Run Code Online (Sandbox Code Playgroud)
对于即使使用所有以前的答案仍然遇到问题的人,请确保您使用的是UITapGestureRecognizer而不是UIGestureRecognizer,我在试图找出问题所在时一直错过了这个细节。
| 归档时间: |
|
| 查看次数: |
55401 次 |
| 最近记录: |