美文网首页iOS专栏swift
触碰任意位置来关闭 iOS 键盘,用 Swift

触碰任意位置来关闭 iOS 键盘,用 Swift

作者: 张嘉夫 | 来源:发表于2016-08-25 00:14 被阅读207次
    override func viewDidLoad() {
        super.viewDidLoad()
    
        //寻找单个或多个触摸。 
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
        view.addGestureRecognizer(tap)
    }
    
    //触摸被识别后调用这个函数
    func dismissKeyboard() {
        //导致 view(或它嵌入的某一个 text field)失去第一响应者的状态
        view.endEditing(true)
    }
    

    如果你要在多个 UIViewControllers 里用这个功能的话,这是完成任务的另一种方式:

    // 把这段代码放在任意你喜欢的位置
    extension UIViewController { 
        func hideKeyboardWhenTappedAround() {
            let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
            view.addGestureRecognizer(tap)
        }
    
        func dismissKeyboard() {
            view.endEditing(true)
        }
    }
    

    现在在每个 UIViewController 里,你要做的就是调用这个函数:

    override func viewDidLoad() {
        super.viewDidLoad()
        self.hideKeyboardWhenTappedAround() 
    }
    

    这个函数被包含为了一个标准函数,在我的 repo 里,包括跟这个类似的许多有用的 Swift Extensions,过来看看:https://github.com/goktugyil/EZSwiftExtensions

    相关文章

      网友评论

      • 五线谱xuan:发现了个问题,hideKeyboardWhenTappedAround()在一个有UITableView的控制器里会拦截cell的点击事件。
      • 五线谱xuan:不错啊。很方便。多谢!

      本文标题:触碰任意位置来关闭 iOS 键盘,用 Swift

      本文链接:https://www.haomeiwen.com/subject/vfiosttx.html