Swift 如何禁用键盘的点击手势识别器UIButton?
我有以下代码:Swift 如何禁用键盘的点击手势识别器UIButton?,swift,xcode,Swift,Xcode,我有以下代码: extension UIViewController { func hideKeyboardWhenTappedAround() { let tap = UITapGestureRecognizer(target: self, action: #selector(self.dissmissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognize
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dissmissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
// Don't handle button taps
return !(touch.view is UIButton)
}
这是一个全局函数
当我按下登录按钮时,键盘消失,然后我必须再次按下它才能登录。有没有办法避免这种情况
我希望当我按下登录按钮时键盘不会消失,但当我按下外部按钮时键盘会消失您缺少的是代理
tap.delegate = self
由于尚未添加代理,您的
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
方法将不会执行
在那里有一个断点,看看它是否被执行。我不这么认为。通过添加我前面提到的委托,就可以实现这个目的
代码如下所示
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dissmissKeyboard))
tap.delegate = self
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
class ViewController: UIViewController, UIGestureRecognizerDelegate {
在类中,您应该实现如下所示的委托类
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dissmissKeyboard))
tap.delegate = self
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
class ViewController: UIViewController, UIGestureRecognizerDelegate {
你的问题不太清楚。但我想的是,当你第一次按“登录”时,键盘关闭,然后在第二次按“登录”按钮时,你的登录按钮功能被称为“右”。我希望当我按“登录”按钮时,键盘不会消失,“登录”按钮不会消失,但当我按“外部”按钮时,键盘会消失。实际上,若我按下登录按钮键,它就会消失,然后我就可以用这个按钮登录了。我必须按两次按钮进行登录,因为第一次按按钮键盘消失第二次按按钮进行登录返回此“类型为'UIViewController'的值没有成员'dissmissKeyboard'”。请查看更新的答案以及实现
UIgestureRecognitizerDelegate的最后一行代码