作者:Sunny-虫虫 | 来源:互联网 | 2023-02-11 03:55
我有一个启用了清除按钮的UITextField。我也有一些代码可以在用户点击屏幕上其他任何地方时关闭键盘:
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
func dismissKeyboard() {
view.endEditing(true)
}
问题在于该代码会干扰清除按钮,因此永远不会清除文本字段。如何防止点击手势识别器处理清除按钮的点击?
1> user2397282..:
找出了防止这种情况发生的方法。
因此清除按钮的类型是UIButton
,因此我们不希望手势识别器识别那些轻击。
当手势识别器收到轻击时,将调用此函数:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
// Don't handle button taps
return !(touch.view is UIButton)
}
该行:
return !(touch.view is UIButton)
如果用户点击的位置为a UIButton
,则返回false,否则返回true。
因此,false =轻击将不会被手势识别器处理,而true =轻击将被处理。
不要忘记添加UIGestureRecognizerDelegate
并使用以下行进行设置:
tap.delegate = self