如何自动退出键盘

How to resign keyboard automatically

我正在使用 IQKeyboardManager。在我的 UI 中,我有一个文本视图,在它下面是一个文本字段。现在,当我点击文本视图时,键盘出现了。

当我点击文本视图下方的文本字段时,我调出了一个日期选择器。但是当我点击 textview 时出现的键盘仍然存在,因为我没有按下键盘上的 Done 按钮。

如果我点击我的文本字段,我怎样才能自动关闭在点击文本视图时出现的键盘而不需要按 Done 按钮..?

我试过这些但没用...

func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
        print("called")
        myTextView.resignFirstResponder()
        return false
    }
    
    func textFieldDidBeginEditing(_ textField: UITextField) {
        print("called")
    }
    

确保您分配了 textField.delegate = self

然后,如果您想在点击文本字段时关闭键盘,只需更正您的 textFieldDidBeginEditing 方法:

func textFieldDidBeginEditing(_ textField: UITextField) {
    myTextView.resignFirstResponder()
    textField.resignFirstResponder()
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    if textField == yourTextFieldName {
        //You need to Resign both responders here.
        yourTextView.resignFirstResponder()
        yourTextFieldName.resignFirstResponder()
        //show your date picker
        return false
    } else {
        return true
    }
}

两种方法的区别

“shouldBegin”的内容允许您对 return 值说“不”以禁止该操作。

“didBegin”表示它刚刚开始发生,您需要在那个时间点采取您需要采取的任何行动。