我在自定义 UIViewController
中有以下代码:
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)
}
没有“点击!”正在打印线条,因此手势识别器未触发。可能出了什么问题?
在此 Controller 中的所有 View 中,已启用用户交互都是真。
如果有任何帮助,此 View Controller 将嵌入到 UINavigationController
中。
最佳答案
1. 移动此行:
let tapDismissTextField = UITapGestureRecognizer(target: self, action: #selector(dismissTap))
在 viewDidLoad()
里面,因为在方法/函数/闭包之外的 self
返回一个 (NSObject) -> () -> YourClass()
(一个 NSObject),而不是你的类,它实际上是 view
的所有者。
2. 我建议只保留一个 GestureRecognizer
关于ios - UITapGestureRecognizer 未在 Swift 3 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42468453/