当用户点击视图时,我有以下代码隐藏我的键盘,但是touchesBegan根本没有触发:
class LoginViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var emailAddress: UITextField
@IBOutlet var password: UITextField
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//Delegate fields
self.emailAddress.delegate = self
self.password.delegate = self
}
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
self.emailAddress.resignFirstResponder()
self.password.resignFirstResponder()
}
func textFieldShouldReturn(textField: UITextField!) -> Bool{
self.emailAddress.resignFirstResponder()
self.password.resignFirstResponder()
return true;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
此视图控制器位于导航控制器内部,因此不确定它是否与响应者链有关
答案 0 :(得分:1)
您的代码对我来说很合适。 (但是,通常我会在每个文本字段中使用self.view.endEditing(YES)
而不是resignFirstResponder
。)
您很有可能以某种方式阻止事件被发送到响应者链。它可能是userInteractionEnabled,alpha为0,touchesBegan的覆盖,它不会向响应者链发送事件,正在吃触摸事件的手势识别器等。如果你制作了一个显示这个的最小测试用例问题,它可能会变得明显,这是什么。