【发布时间】:2014-11-07 17:03:54
【问题描述】:
我试图了解一般的委托方法,特别是如何解除从文本字段中弹出的 UIDatePicker。
根据文档, textFeildShouldBeginEditing 返回 true '如果应该启动编辑会话;否则为 false 以禁止编辑。'
然后我为什么要告诉应用程序 resignFirstResponder,这意味着隐藏键盘/日期选择器(如 stackoverflow 上的几个 examples 和 noobie tutorials)?
我不明白的是:如果它应该开始编辑,为什么还要隐藏输入设备?显然,我误解了一个或两个概念。
func resign() {
dobTextField.resignFirstResponder()
nameTextField.resignFirstResponder()
println("resign gets printed, but the date picker is still visible!?!")
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if (textField === dobTextField) {
resign() // but should begin editing, oder?!?
}
【问题讨论】:
-
这取决于,通常你不应该从
ShouldBegin辞职,如果用户按下键盘的return key,还有另一个代表shouldreturn会被调用,你通常应该在那里辞职。现在有时用户不按返回键并直接跳转到另一个文本字段,这会将响应者更改为下一个文本字段。在您的情况下,您正在尝试退出所有可能有键盘的文本字段,但它应该排除当前的文本字段,而不是全部。
标签: ios swift uitextfield first-responder