保存UITextField测试的最佳方法:textFieldShouldReturn或textFieldDidEndEditing

use*_*026 4 ios

我的目标只是在用户点击键盘上的完成按钮后在UITextField上保存文本.我可以在extFieldShouldReturn或textFieldDidEndEditing中执行此操作:它有什么区别吗?还是有更好的方法?

谢谢!!

Nic*_*ood 18

textFieldShouldReturn仅在用户按下返回键时调用.如果由于某些其他原因(例如用户选择另一个字段或将视图切换到另一个屏幕)而解除键盘,则不会是textFieldDidEndEditing.

最好的方法是使用textFieldShouldReturn来重新响应响应者(隐藏键盘),如下所示:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    //hide the keyboard
    [textField resignFirstResponder];

    //return NO or YES, it doesn't matter
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

键盘关闭时,将调用textFieldDidEndEditing.然后,您可以使用textFieldDidEndEditing对文本执行某些操作:

- (BOOL)textFieldDidEndEditing:(UITextField *)textField
{
    //do something with the text
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您实际上只想在用户明确按下键盘上的"go"或"send"或"search"(或其他)按钮时执行操作,那么您应该将该处理程序放在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;
}
Run Code Online (Sandbox Code Playgroud)