【发布时间】:2011-09-11 07:13:06
【问题描述】:
当按下“完成”时,我知道textViewDidEndEditing: 被调用。它有时也被其他操作调用。
我想要一个仅在按下“完成”时才调用的方法——完全是。我一直在阅读代码的 sn-ps,但没有看到有人这样做。顺便说一句,我没有使用任何 XIB 来显示我的观点。
这可能吗?
【问题讨论】:
标签: objective-c cocoa-touch ios keyboard
当按下“完成”时,我知道textViewDidEndEditing: 被调用。它有时也被其他操作调用。
我想要一个仅在按下“完成”时才调用的方法——完全是。我一直在阅读代码的 sn-ps,但没有看到有人这样做。顺便说一句,我没有使用任何 XIB 来显示我的观点。
这可能吗?
【问题讨论】:
标签: objective-c cocoa-touch ios keyboard
首先,当用户点击 DONE 按钮时不会调用 textFieldDidEndEditing。 编辑后触摸任何东西都会调用它。
为了拥有一个独占按钮“完成”,您可以创建一个完成键作为 UIBarButtonItem,并编写一个类似的 IBAction
- (IBAction) doneClicked:(id)sender
以下行将完成键指定为返回键。
textField.returnKeyType = UIReturnKeyDone;
您可以检查是否在 TextFieldDidEndEditing 中按下了 Done 键...您也可以使用另一个按钮,然后将其返回。
【讨论】:
只要按下 Return 键,UITextField 的实例就会向其委托发送textFieldShouldReturn: 消息。如果您希望您的控制器接收此消息,请让它向文本字段发送 setDelegate: 消息,将 self 作为参数传递(或将文本字段的委托出口连接到 Interface Builder 中的控制器)并实现以下方法在您的控制器类中:
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
有关详细信息,请参阅UITextFieldDelegate 协议的文档。
【讨论】: