iOS中的UITextField和键盘pipe理问题

(我目前正在瞄准iOS 2.0。)

我有一个类的子类UITextField和实现UITextFieldDelegate协议。

起初,我并没有把class级设置成自己的代表,当我在现场点击时,键盘自动popup。 到现在为止还挺好。

我用UIReturnKeyDone发送setReturnKeyType:消息,所以它改变了右下angular的button来说完成。

问题是,当我点击完成或按下[返回],什么都没有发生 – 键盘不会消失。

我尝试添加自己作为结束编辑通知的观察者,但是当完成点击时它永远不会被调用; 从谷歌search,似乎只有当领域辞职作为第一响应者被解雇 – 这是我不能发生的一点。

然后,我在这里find答案,build议添加自己作为代表和处理textFieldShouldReturn :. 问题是,一旦我将自己添加为委托,当你点击该字段时,键盘不再popup(而且它没有获得焦点) – 它似乎并不成为第一响应者。

我试着处理textFieldShouldBeginEditing:并返回YES(文档说,应该是默认的,如果不重写),那被调用,但没有任何区别。 在我的无知中,我尝试了[textField becomeFirstResponder],并被堆栈溢出(现在我知道这是响应调用成为第一响应者)。

我现在彻底卡住了!

谁能帮忙? 当用户单击完成或按[返回]时,我只想让键盘消失。

你是使用xib还是以编程方式进行? 如果您使用的是xib,那么您可能忘记连接文件所有者的委托。

(BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } 

试试这一个。

我的错。 原来你不应该为自己设置一个文本字段的委托 – 由于未处理的select器被转发给它的委托,有复杂的。 如果它没有响应select器消息去它的委托…这是我们已经知道,没有回应。 因此,一个无限循环。

使用一个单独的对象作为委托完美地工作。

希望这会帮助别人避免同样的问题。