UITapGestureRecognizer斯威夫特不点火3
我已经在自定义UIViewController
下面的代码:UITapGestureRecognizer斯威夫特不点火3
let tapDismissTextField = UITapGestureRecognizer(target: self, action: #selector(dismissTap))
func dismissTap() {
print("Tap!")
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.addGestureRecognizer(tapDismissTextField)
self.friendsView.addGestureRecognizer(tapDismissTextField)
}
没有 “点击”!线正在打印,所以手势识别器不会触发。可能会出现什么问题?
启用用户交互是true横跨此控制器中的所有视图。
此视图控制器嵌入UINavigationController
如果有任何帮助。
只有在加载视图后,才需要指定自己。
var tapDismissTextField: UITapGestureRecognizer!
并在viewDidLoad方法:
override func viewDidLoad() {
super.viewDidLoad()
tapDismissTextField = UITapGestureRecognizer(target: self, action: #selector(dismissTap))
view.addGestureRecognizer(tapDismissTextField)
}
1.移动这一行:
let tapDismissTextField = UITapGestureRecognizer(target: self, action: #selector(dismissTap))
内部viewDidLoad()
,因为self
的方法/函数外/闭包返回一个(NSObject) ->() -> YourClass()
(一个NSObject),而不是你的班级,实际上是view
的拥有者。
2.我建议只留下一个鉴于GestureRecognizer
添加tapDismissTextField到viewdid负载
override func viewDidLoad() {
super.viewDidLoad()
let tapDismissTextField = UITapGestureRecognizer(target: self, action: #selector(dismissTap))
self.view.addGestureRecognizer(tapDismissTextField)
self.friendsView.addGestureRecognizer(tapDismissTextField)
}
这不是坐上UITextField
工作的方式。我想你确实将setUserInteraction
更改为false
以防止UITextField
行为。对?这就是为什么你的手势识别器不起作用。
所以,你需要给予,因为你看到我们现在处于两难境地。我们希望手势工作,我们不希望UITextField行为正常。我们需要知道你所取得的成就,以便更好地帮助你。
信息:
如果wonna显示自定义视图。例如
UIPickerView
设置inputView
属性为您的UITextField
并删除您的手势 识别器。
解决方法:
您可以使用点击手势上
UITextField
上海华。并且,尝试 检测是否水龙头位于UITextField
的框架内。 example
另一种解决方法:
尝试做的
textFieldDidBeginEditting
委托 方法你的行动。并做一些调整来禁用键盘。可能会将inputView
设置为零。
所以,我们需要确切地知道你想要达到什么样的目的,才能给你正确的解决方案。
这不是正确的语法,我也不知道你的代码没有抛出错误,因为没有'UITapGestureRecogniser',只有'UITapGestureRecognizer'(带'z',而不是's') –
道歉,这些都是现在az – Legatro
,它更好。拼写非常重要。 –