1

我在textfieldShouldEndEditing委托方法中对 UITextField 进行验证,因此每次更改正在编辑的 UITextfield 时都会调用该方法并执行验证。

键盘的返回按钮配置为完成按钮。当它被按下时,我处理输入,但 textfieldShouldEndEditing最后编辑的 UItextField 之前从未被调用过,因此它没有被验证。

这对我来说似乎很奇怪,因为正常行为是用户在输入字段中的最后一个字符后点击完成按钮,但这不会触发该textFieldShouldEndEditing方法。

为此,我必须在textfieldShouldReturn方法中再次强制验证。

也许我错过了一些观点,因为我找不到其中的逻辑。

4

1 回答 1

6

我发现了问题。

我必须先辞职,textfieldShouldReturn然后再textfieldShouldEndEditing调用。

这是我的方法。我有两个 UITextFields。self.username是其中一个的 IBOutlet,返回按钮配置为 NEXT。self.password是其他指向带有完成返回按钮的 UITextField 的 IBOutlet。

-(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;    
}
于 2012-04-16T07:31:18.970 回答