uitextfield委托必须是文件的所有者?

时间:2010-04-01 23:06:39

标签: cocoa-touch

我已经看到一些引用(例如here),以回应人们在iPhone中解锁键盘时遇到的问题“请仔细检查代理是否附加到文件所有者。

这一定是真的吗?或者只是标准练习?我不能在我的nib中有其他对象,比如UIViewController的子类,并按我的喜好连接到那些对象吗?我不想将所有内容都路由到恰好是文件所有者的对象。

那就是说,我很难让键盘消失。我知道它已连接到委托,因为我可以设置断点并逐步执行代码。我可以看到[theTextField resignFirstResponder]被调用(并返回true),但键盘仍然不会消失。

还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

特定视图中的所有控件都旨在与拥有nib文件的View Controller对话。即使你有一个更改UITextField值的UISlider,这也将由UIViewController子类中的一个方法处理,该方法在滑块的值发生变化时被触发并更新文本字段中的文本。因此,UIViewController中的9次将成为nib文件的所有者。

通常,您要定义的文本字段委托方法是textFieldShouldReturn,在文本字段上调用resignFirstResponder,听起来就像您已经完成的那样。

确保theTextField的插座也已连接。它可以是nil,运行时会将[nil resignFirstResponder]视为noop,而不是错误。