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

7 keyboard cocoa-touch objective-c ios

当按下"完成"时,我知道textViewDidEndEditing:被叫.有时也会通过其他行动来调用它.

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

这可能吗?

jle*_*ehr 14

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

- (BOOL)textFieldShouldReturn:(UITextField *)textField;
Run Code Online (Sandbox Code Playgroud)

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


Leg*_*las 1

首先,当用户点击“完成”按钮时,不会调用 textFieldDidEndEditing。编辑后只要触摸任何内容就会调用它。

为了拥有一个专用按钮“完成”,您可以创建一个完成键作为 UIBarButtonItem,并编写一个 IBAction,例如

- (IBAction) doneClicked:(id)sender 
Run Code Online (Sandbox Code Playgroud)

以下行将 Done 键指定为 Return 键。

textField.returnKeyType = UIReturnKeyDone;
Run Code Online (Sandbox Code Playgroud)

您可以检查 TextFieldDidEndEditing 中是否按下了 Done 键...您也可以使用另一个按钮,然后返回它。