处理textViewDidEndEditing之外的键盘上的“完成”按钮

时间:2011-06-08 23:20:37

标签: objective-c cocoa-touch ios keyboard

当按下“完成”时,我知道textViewDidEndEditing:被调用。它有时也被其他行动称为。

我想要一个仅在按下“完成”时调用的方法 - 专门。我一直在阅读代码片段,但没有看到有人这样做。顺便说一下,我没有使用任何XIB作为我的观点。

这可能吗?

2 个答案:

答案 0 :(得分:14)

只要按下Return键,UITextField的实例就会向其委托发送textFieldShouldReturn:消息。如果您希望控制器收到此消息,请让它向文本字段发送setDelegate:消息,将self作为参数传递(或将文本字段的委托出口连接到Interface Builder中的控制器)和在您的控制器类中实现以下方法:

- (BOOL)textFieldShouldReturn:(UITextField *)textField;

有关详细信息,请参阅UITextFieldDelegate协议的文档。

答案 1 :(得分:1)

首先,当用户点击DONE按钮时,不会调用textFieldDidEndEditing。 在您编辑后触摸任何内容时立即调用。

如果有一个独占按钮'完成',您可以创建一个完成键作为UIBarButtonItem,并编写一个像

这样的IBAction
- (IBAction) doneClicked:(id)sender 

以下行将完成键指定为返回键。

textField.returnKeyType = UIReturnKeyDone;

您可以检查TextFieldDidEndEditing中是否按下了完成键...您也可以使用其他按钮,然后返回它。