如何在标签中显示文本字段验证错误消息

how to show textfield validation error message in a label

我是 iOS 编程的初学者。我正在创建注册表单,并在文本字段上进行客户端验证。我想要的是在标签中的文本字段下方显示错误消息。我搜索了很多并得到 this so question 但我发现它很难理解,我认为必须有一种更简单的方法来实现这一点。我能够在标签中显示消息,但问题是当焦点再次设置到该文本字段时它不会隐藏。

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if(textField == _emailTextField)
    {
        if(![self validateEmailWithString:_emailTextField.text])
        {
            //showing error on a label
            [_errorMessageLabel setText:@"please enter valid Email"];
        }
    }
    else
    {
        //valid email
    }
}

- (bool)validateEmailWithString:(NSString *)emailStr
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:emailStr];
}

是的,有一个简单的解决方案。在下面的委托方法

中将焦点设置为 UITextField 时,只需隐藏您的标签
-(void)textFieldDidBeginEditing:(UITextField *)textField {
    _errorMessageLabel.hidden = YES;

    ...

}

如果我错了请纠正我,您只想隐藏文本(意思是空文本)或隐藏标签本身?

要隐藏文本,请使用 "textFieldDidBeginEditing" 清空标签

- (void) textFieldDidBeginEditing:(UITextField *)textField {
    [_errorMessageLabel setText:@""];
}

要隐藏标签,

- (void) textFieldDidBeginEditing:(UITextField *)textField {
    _errorMessageLabel.hidden = YES;
}