Swift UITableViewCell上隐藏键盘点击的UITapGestureRecognitor

Swift UITableViewCell上隐藏键盘点击的UITapGestureRecognitor,swift,uitableview,uitapgesturerecognizer,Swift,Uitableview,Uitapgesturerecognizer,我有下面的脚本,当键盘打开时,如果我在这个UIController中单击它,它会隐藏键盘,但它也会单击单元格。我不希望这种情况发生 我知道cancelsTouchesInView将控制该功能。。。如果我将其设置为true,它将不会单击单元格,但在隐藏键盘后我无法单击单元格 有什么好的解决办法吗 extension UIViewController { func hideKeyboardWhenTappedAround() { let tap = UITapGestureR

我有下面的脚本,当键盘打开时,如果我在这个UIController中单击它,它会隐藏键盘,但它也会单击单元格。我不希望这种情况发生

我知道
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)
    }
}