我的目标只是在用户单击键盘上的完成按钮后将文本保存在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;
}

07-27 17:10