gpt4 book ai didi

swift - 如何禁用点击手势识别器 UIButton 来关闭键盘?

转载 作者:行者123 更新时间:2023-11-30 10:37:11 24 4
gpt4 key购买 nike

我有这个代码:

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

由于您尚未添加委托(delegate),因此您的

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {

方法不会执行。

那里有一个断点,看看它是否执行。我不这么认为。通过添加我之前提到的委托(delegate)就可以解决问题。

代码如下所示。

let tap = UITapGestureRecognizer(target: self, action: #selector(self.dissmissKeyboard))
tap.delegate = self
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)

在类中,您应该实现如下所示的委托(delegate)类。

class ViewController: UIViewController, UIGestureRecognizerDelegate {

关于swift - 如何禁用点击手势识别器 UIButton 来关闭键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57724197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com