swift - 仅当键盘处于事件状态时,点击背景才能关闭 TextField 键盘

标签 swift uitextfield uigesturerecognizer

我设置为十进制键盘的文本字段一直存在问题,因为它的十进制键盘没有返回键,所以我必须点击背景才能关闭它。我只想允许它在键盘打开时识别该点击。目前,只要您点击背景,它就会识别它。任何帮助都会很棒,谢谢。

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    self.view.endEditing(true)
    label.text = "tapped"
}

最佳答案

您可以添加此扩展程序,它对我有用:

extension UIViewController {
    func hideKeyboardWhenTappedAround() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false
        view.addGestureRecognizer(tap)
    }
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}

然后将这个self.hideKeyboardWhenTappedAround()放入viewDidLoad

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        view.endEditing(true)
    }

关于swift - 仅当键盘处于事件状态时,点击背景才能关闭 TextField 键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49216744/

相关文章:

objective-c - NSScrollView 缩放故障

ios - 递归 UITableViewCell 按钮 Action

objective-c - 如何模拟 UITextField 上的 isEditing getter?

ios - 从 iOS 相机捕获视频

swift - 设置 GKLocalPlayer 的 authenticateHandler 属性时不编译闭包 - Swift 3.0

ios - 问题 TextField 更改为搜索文本

ios - UITextField rightViewMode 无法正常工作

ios - 如何将可拖动的 UIView 限制在特定范围内

swift - 无法在 iOS 13.4 上与 WKWebView 同时处理触摸

iphone - 如果按下 subview 的按钮如何取消 UIGestureRecognizer