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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2019.7.21 礼拜天~晴 亲子日记369 小孩自己在家安排学习,也不知道能学的啥样?
    茉莉19阅读 150评论 0 2
  • 曾经我自诩是半个诗人 见山亦是深情伟岸 见海亦是热情澎湃 见花见草 觉得他们皆有故事 云海江潮虫鸣鸟啼 都仿佛是暗...
    赤剑萧雄阅读 6,618评论 5 6