Swift UITableViewCell上隐藏键盘点击的UITapGestureRecognitor
我有下面的脚本,当键盘打开时,如果我在这个UIController中单击它,它会隐藏键盘,但它也会单击单元格。我不希望这种情况发生 我知道Swift UITableViewCell上隐藏键盘点击的UITapGestureRecognitor,swift,uitableview,uitapgesturerecognizer,Swift,Uitableview,Uitapgesturerecognizer,我有下面的脚本,当键盘打开时,如果我在这个UIController中单击它,它会隐藏键盘,但它也会单击单元格。我不希望这种情况发生 我知道cancelsTouchesInView将控制该功能。。。如果我将其设置为true,它将不会单击单元格,但在隐藏键盘后我无法单击单元格 有什么好的解决办法吗 extension UIViewController { func hideKeyboardWhenTappedAround() { let tap = UITapGestureR
cancelsTouchesInView
将控制该功能。。。如果我将其设置为true,它将不会单击单元格,但在隐藏键盘后我无法单击单元格
有什么好的解决办法吗
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard2))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard2() {
view.endEditing(true)
}
}
最好的办法可能是在显示键盘时禁用tableView上的用户交互,然后在结束编辑时重新启用 但是,您可以尝试一下,看看它是否满足您的需要 更改
dismissKeyboard2
func的签名,以获取对点击手势识别器的引用,并在结束编辑时将其删除:
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard2(_:)))
tapGesture.cancelsTouchesInView = true
view.addGestureRecognizer(tapGesture)
}
@objc func dismissKeyboard2(_ g: UITapGestureRecognizer) {
view.endEditing(true)
view.removeGestureRecognizer(g)
}
}