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



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

但是,如果您实际上只想在用户明确按下键盘上的"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;
}

最新更新