我的目标只是在用户单击键盘上的完成按钮后将文本保存在UITextField上。我可以在extFieldShouldReturn或textFieldDidEndEditing中执行此操作:有什么区别吗?还是有更好的方法?
谢谢!!
最佳答案
仅当用户按下返回键时才会调用textFieldShouldReturn。如果由于某些其他原因(例如用户选择另一个字段或将视图切换到另一个屏幕)而关闭了键盘,则不会,但是textFieldDidEndEditing可以。
最好的方法是使用textFieldShouldReturn退出响应者(隐藏键盘),如下所示:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//hide the keyboard
[textField resignFirstResponder];
//return NO or YES, it doesn't matter
return YES;
}
键盘关闭时,将调用textFieldDidEndEditing。然后,您可以使用textFieldDidEndEditing对文本进行操作:
- (BOOL)textFieldDidEndEditing:(UITextField *)textField
{
//do something with the text
}
但是,如果您实际上只想在用户显式按下键盘上的“执行”或“发送”或“搜索”(或任何其他按钮)时执行该操作,则应将该处理程序放入textFieldShouldReturn方法中,就像这样:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//hide the keyboard
[textField resignFirstResponder];
//submit my form
[self submitFormActionOrWhatever];
//return NO or YES, it doesn't matter
return YES;
}