我有一个启用了清除按钮的 UITextField。我还有一些代码可以在用户点击屏幕上的其他任何地方时关闭键盘:
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
func dismissKeyboard() {
view.endEditing(true)
}
问题是这段代码干扰了清除按钮,所以文本字段永远不会被清除。如何防止点击手势识别器处理清除按钮点击?
最佳答案
找到一种方法来防止这种情况发生。
所以清除按钮的类型是 UIButton
,所以我们不希望手势识别器识别这些点击。
当手势识别器接收到点击时调用此函数:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
// Don't handle button taps
return !(touch.view is UIButton)
}
行:
return !(touch.view is UIButton)
如果用户点击的地方是 UIButton
则返回 false,否则返回 true。
所以 false = tap 不会被手势识别器处理,true = tap 会被处理。
不要忘记添加 UIGestureRecognizerDelegate
并使用以下行进行设置:
tap.delegate = self
关于ios - 点击手势识别器干扰清除按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42402854/