当我返回false时,为什么textFieldShouldReturn仍在工作?

时间:2015-11-10 06:51:25

标签: ios uitextfield

我通过实现函数textFieldShouldReturn并在此函数内调用resignFirstResponder()来按下返回键上的键盘。它工作得很好但是当我在这个函数中返回false时,键盘仍然隐藏起来。现在我不明白,如果键盘隐藏在两种情况下,返回truefalse的用途是什么?

4 个答案:

答案 0 :(得分:7)

由于拨打resignFirstResponder,键盘正在被解雇。它与textFieldShouldReturn的返回值没有任何关系。

根据我的经验,textFieldShouldReturn的返回值几乎没用。在绝大多数情况下,无论您返回true还是false都没有区别。

我在false的所有用法中都返回testFieldShouldReturn。如果您返回true并且textFieldShouldReturn的实施将第一响应者设置为UITextView,则文本视图最终会添加换行符。从false返回textFieldShouldReturn可确保不会发生这种情况。但这是基于几年前iOS 4或5的经验。我不知道iOS的最新版本是否还会发生这种情况。

答案 1 :(得分:1)

textFieldShouldReturn的返回值回答了一个不同的问题。如果文本字段具有控制事件editingDidEndOnExit的操作,则那个将导致键盘关闭除非 textFieldShouldReturn被实现为返回{{ 1}}。

答案 2 :(得分:0)

我尝试过 true false ,键盘会关闭,这是代码:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return false
} 

是否关闭键盘取决于“ textField.resignFirstResponder()”, 如果删除它,则无论是真还是假,键盘都不会消失。

答案 3 :(得分:0)

自从我在Native iOS上工作以来已经很长时间了。将近2年。我刚刚学习了Swift 5,并从基础知识着手研究了被遗忘的新部件。这是我观察到的。

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
    if searchTextField.text != "" {
        return true
    }
    searchTextField.placeholder = "Type Something"
    return false
}

在这里,当我按回车键而不输入单个字母时,键盘不会关闭。而是占位符文本更改以通知用户键入某些内容。从false返回textFieldShouldEndEditing的魔力。

如果我在至少输入一个字符后按了相同的返回键,它将直接关闭键盘。礼貌地从同一个true返回一个textFieldShouldEndEditing

放置textField.resignFirstResponder()时也没有发现任何差异,无论我返回true还是false

结论: true关闭键盘。 false停止释放键盘。