我的目标只是在用户点击键盘上的完成按钮后在UITextField上保存文本。我可以在extFieldShouldReturn或textFieldDidEndEditing中执行此操作:它有什么区别吗?还是有更好的方法?
谢谢!
答案 0 :(得分:18)
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"或"发送"或"搜索"键盘上的(或其他)按钮,然后您应该将该处理程序放在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;
}