touchesBegan不开火

时间:2014-07-20 22:02:33

标签: ios swift touch-event

当用户点击视图时,我有以下代码隐藏我的键盘,但是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.
    }


}

此视图控制器位于导航控制器内部,因此不确定它是否与响应者链有关

1 个答案:

答案 0 :(得分:1)

您的代码对我来说很合适。 (但是,通常我会在每个文本字段中使用self.view.endEditing(YES)而不是resignFirstResponder。)

您很有可能以某种方式阻止事件被发送到响应者链。它可能是userInteractionEnabled,alpha为0,touchesBegan的覆盖,它不会向响应者链发送事件,正在吃触摸事件的手势识别器等。如果你制作了一个显示这个的最小测试用例问题,它可能会变得明显,这是什么。