UITapGestureRecognizer 不适用于 UITextField 的自定义子类
Posted
技术标签:
【中文标题】UITapGestureRecognizer 不适用于 UITextField 的自定义子类【英文标题】:UITapGestureRecognizer not working for custom subclass of UITextField 【发布时间】:2015-05-25 01:20:31 【问题描述】:我创建了 UITextField 的自定义子类 CustomTextView。
我创建了一个
private var tapGesture = UITapGestureRecognizer()
在 customTextView 类中
在 initInView 中,我有以下代码
tapGesture.addTarget(self, action: "tapTextField:")
self.addGestureRecognizer(tapGestureRecognizer)
CustomTextView 实现 UIGestureRecognizerDelgate
CustomTextView 有一个名为 tapTextField 的私有函数现在,当我使用 ios 模拟器并单击文本字段时,函数 tapTextField 永远不会被调用。
我在这里缺少什么?我看到了类似的帖子,但没有一个回答我的问题。我无法评论这些,因为我还没有声誉。所以作为一个新问题提出。
PS:这是否与设置了 firstResponder 有关?这是我正在处理的其他人的代码,所以我可能遗漏了一些东西。让我知道我应该寻找什么
相关堆栈溢出问题:
Add UITapGestureRecognizer to UITextView without blocking textView touches UITextview: Place focus on becomefirstresponder【问题讨论】:
你设置属性isUserInteractionEnabled
了吗?
我认为 isUserInteractionEnabled 默认设置为 true,因为这是我可以与之交互的 UITextView。但我仍然明确地将其设置为 true 并尝试过。不走运!!
【参考方案1】:
我不知道 swift,但请尝试将 "tapTextField:"
更改为 "tapTextField"
并确保您没有任何参数/参数/无论 swift 在您的 "tapTextField"
函数中调用它们的内容。
看起来像
self.addGestureRecognizer(tapGestureRecognizer)
应该是self.addGestureRecognizer(tapGesture)
【讨论】:
【参考方案2】:您可以尝试一些方法来调试问题。
1> 确保tapTextField
和tapTextField:
没有错误,即您正在添加带参数的选择器,但您已经实现了相同的方法而没有任何参数。
2> 确保没有任何其他透明视图遮挡您的自定义 uitextfield
。
3> 在 xcode 控制台中打印 po yourTextFieldName
以查看您的文本字段实际上是否添加了任何手势识别器。
希望对你有帮助
【讨论】:
以上是关于UITapGestureRecognizer 不适用于 UITextField 的自定义子类的主要内容,如果未能解决你的问题,请参考以下文章
UITapGestureRecognizer 不适用于 UIImageView 自定义类
UITapGestureRecognizer 不适用于 UITextField 的自定义子类
UITapGestureRecognizer 不适用于 UIView 动画
UITapGestureRecognizer 适用于 UIImageView 但不适用于 UILabel