我已经看到一些引用(例如here),以回应人们在iPhone中解锁键盘时遇到的问题“请仔细检查代理是否附加到文件所有者。
这一定是真的吗?或者只是标准练习?我不能在我的nib中有其他对象,比如UIViewController的子类,并按我的喜好连接到那些对象吗?我不想将所有内容都路由到恰好是文件所有者的对象。
那就是说,我很难让键盘消失。我知道它已连接到委托,因为我可以设置断点并逐步执行代码。我可以看到[theTextField resignFirstResponder]被调用(并返回true),但键盘仍然不会消失。
还有其他建议吗?
答案 0 :(得分:0)
特定视图中的所有控件都旨在与拥有nib文件的View Controller对话。即使你有一个更改UITextField值的UISlider,这也将由UIViewController子类中的一个方法处理,该方法在滑块的值发生变化时被触发并更新文本字段中的文本。因此,UIViewController中的9次将成为nib文件的所有者。
通常,您要定义的文本字段委托方法是textFieldShouldReturn
,在文本字段上调用resignFirstResponder
,听起来就像您已经完成的那样。
确保theTextField
的插座也已连接。它可以是nil
,运行时会将[nil resignFirstResponder]
视为noop,而不是错误。