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
网友评论