用户点击 UIKeyboard 中的完成按钮时未调用 textFieldShouldEndEditing
Posted
技术标签:
【中文标题】用户点击 UIKeyboard 中的完成按钮时未调用 textFieldShouldEndEditing【英文标题】:textFieldShouldEndEditing not called when user taps Done Button in UIKeyboard 【发布时间】:2012-04-16 07:21:32 【问题描述】:我在 textfieldShouldEndEditing
委托方法中对 UITextField 进行验证,因此每次我更改正在编辑的 UITextfield 时都会调用该方法并执行验证。
键盘的返回按钮配置为完成按钮。当按下它时,我会处理输入,但上次编辑的 UItextField 的 textfieldShouldEndEditing
之前从未被调用过,因此它未被验证。
这对我来说似乎很奇怪,因为正常行为是用户在输入字段中的最后一个字符后点击完成按钮,但这不会触发textFieldShouldEndEditing
方法。
为此,我必须在 textfieldShouldReturn
方法中再次强制验证。
也许我错过了一些观点,因为我找不到其中的逻辑。
【问题讨论】:
【参考方案1】:我找到了问题。
我必须在textfieldShouldReturn
中辞职FirstResponder,然后textfieldShouldEndEditing
被调用。
这是我的方法。我有两个 UITextFields。 self.username
是其中一个的 IBOutlet,返回按钮配置为 NEXT。 self.password
是其他 IBOutlet 指向带有完成返回按钮的 UITextField。
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
if (textField == self.userName)
return [self validateUserName:textField.text];
if (textField == self.password)
return [self validatePassword:textField.text];
//No hay errores de validación
return YES;
-(BOOL)textFieldShouldReturn:(UITextField *)textField
//In userName return is Next
//In password return is Done
if (textField == self.userName)
[self.password becomeFirstResponder];
[textField resignFirstResponder];
return YES;
【讨论】:
以上是关于用户点击 UIKeyboard 中的完成按钮时未调用 textFieldShouldEndEditing的主要内容,如果未能解决你的问题,请参考以下文章
UIKeyboard 返回按钮操作不同于 UITextView resignFirstResponder
解雇 UIKeyboard 在 Objective-C 中不起作用
在不禁用用户交互的情况下阻止 UIWebView 输入显示 UIKeyboard