为什么 textFieldShouldReturn 在我 return false 时仍然有效?

Why textFieldShouldReturn is still working when i return false?

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

由于调用 resignFirstResponder,键盘正在关闭。它与 textFieldShouldReturn.

的 return 值完全无关

根据我的经验,textFieldShouldReturn 的 return 值几乎没有用。在绝大多数情况下,return truefalse.

都没有区别

我 return false 我对 testFieldShouldReturn 的所有使用。如果你 return true 并且你的 textFieldShouldReturn 实现将第一响应者设置为 UITextView,文本视图最终会添加换行符。从 textFieldShouldReturn 返回 false 可确保不会发生这种情况。但这是基于几年前 iOS 4 或 5 的经验。我不知道 iOS.

的最新版本是否仍然如此

textFieldShouldReturn 的 return 值回答了一个 不同的问题 。如果文本字段有控制事件 editingDidEndOnExit 的操作,that 将导致键盘关闭 unless textFieldShouldReturn实现为 return false.

我试过 truefalse,键盘确实会关闭,代码如下:

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

键盘是否关闭取决于“textField.resignFirstResponder()”, 如果删除它,键盘将不再关闭,无论是对还是错。

我已经有很长时间没有参与 Native iOS 了。将近2年。我刚刚学习了 swift 5 并从基础开始研究被遗忘的部分和新部分。这是我观察到的。

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

在这里,当我按下 return 键而没有输入任何字母时,键盘不会关闭。相反,占位符文本会更改以通知用户键入内容。 returning false 来自 textFieldShouldEndEditing.

的魔力

如果我在至少输入一个字符后按同一个 return 键,它只会关闭键盘。来自同一个 textFieldShouldEndEditing.

的 returning a true

无论我是 return true 还是 false.

,当我放置 textField.resignFirstResponder() 时我也没有观察到任何差异

结论: true 关闭键盘。 false 阻止键盘关闭。