隐藏键盘IOS Swift

时间:2016-02-18 15:39:35

标签: ios swift uiviewcontroller uitextfield uitextfielddelegate

我发生了以下问题:

我有两个TextField,一个具有默认行为,另一个捕获textFieldDidBeginEditing方法委托,以呈现带有PresentationStyle(Custom)和TransitionStyle(CrossDissolve)的UIViewController。到目前为止一切正常。但是,如果我编辑第一个textField(并保持键盘打开)然后转到第二个,键盘打开,我无法关闭它(好像第一个textField失去了焦点,甚至没有调用textFieldShouldReturn时)我按下按钮介绍。

我尝试过:

  • TextFieldDidEndEditing(用于调用resignFirstResponder)
  • 在viewWillDissaper方法中(我也称为resignFirstResponder)

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
    
    func textFieldDidEndEditing(textField: UITextField) {
        print("Resign Last TextField")
        textField.resignFirstResponder()
    }
    
    func textFieldDidBeginEditing(textField: UITextField) {
        print("Did Begin editing")
        if textField == self.departing || textField == self.returning{
            textField.resignFirstResponder()
            self.lastTextFieldSelected = textField
    
            let datePickerViewController = Util.getViewController("DatePickerViewController") as! DatePickerViewController
            datePickerViewController.dateStyle = NSDateFormatterStyle.ShortStyle
            datePickerViewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
            datePickerViewController.modalPresentationStyle = UIModalPresentationStyle.Custom
            datePickerViewController.datePickerDelegate = self
    
            self.presentViewController(datePickerViewController, animated: true, completion: nil)
        }
    }
    

编辑: 我尝试使用self.view.endEditing(true)没有。

我做了一个小例子(我检查的是,textFieldShouldBeginEditing允许我关闭键盘。): https://github.com/Abreu0101/TextFieldBug

1 个答案:

答案 0 :(得分:0)

看起来你的textFieldDidEndEditing和其他方法甚至都没有被调用。确保设置UITextField的委托:

textField.delegate = self

同时导入班级中的UITextFielDelegate

希望有所帮助:)