点击UITextField以外的区域,实际是点击了当前View,当前View捕获点击事件,可它不会传递该事件
这种简单可用办法:addGestureRecognizer
class ViewController: UIViewController {
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//注册点击事件
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
}
//点击空白处关闭键盘方法
func handleTap(sender: UITapGestureRecognizer) {
if sender.state == .ended {
print("收回键盘")
self.username.resignFirstResponder()//username放弃第一响应者
self.password.resignFirstResponder()//password放弃第一响应者
}
sender.cancelsTouchesInView = false
}
}
其它事件
UIGestureRecognizer //类用于手势识别,它的子类有主要有六个分别是:
UITapGestureRecognizer //(轻击一下)
UIPinchGestureRecognizer //(两指控制的缩放)
UIRotationGestureRecognizer //(旋转)
UISwipeGestureRecognizer //(滑动,快速移动)
UIPanGestureRecognizer //(拖移,慢慢移动)
UILongPressGestureRecognizer //(长按)