【问题标题】:how to show textfield validation error message in a label如何在标签中显示文本字段验证错误消息
【发布时间】:2015-07-03 06:24:33
【问题描述】:

我是 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];
}

【问题讨论】:

  • 我想我不明白这个问题。当文本字段成为第一响应者时,只需清除标签?进一步检查文本字段委托方法,当文本字段具有焦点时,您有一个回调。
  • 你说这个 [textField resignFirstResponder]; self.errorMessageLabel.text = @"";
  • 不,请查看 Bhanu Priya 的回答
  • 具体来说,我想像警报视图一样使用标签。在标签上显示错误消息后,当我们再次点击文本字段时,标签应该是清晰的。
  • 我有一个查询,这个带有答案的代码适用于单个 texfield。如果我在表单上有一个 10-15 的文本字段怎么办。这是显示验证错误消息的优化方式吗?

标签: ios objective-c uilabel


【解决方案1】:

是的,有一个简单的解决方案。只需在下面的委托方法中将焦点设置为 UITextField 时隐藏您的标签

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

    ...

}

【讨论】:

  • 它永远隐藏标签,当在文本字段中输入错误时不显示标签。
  • 感谢它的出色工作。这样一个显示验证错误消息的简单代码:)
  • @KunalKumar,当在文本字段中输入错误时,在将文本设置为标签之前,再次显示意味着设置_errorMessageLabel.hidden = NO;
【解决方案2】:

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

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

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

要隐藏标签,

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

【讨论】:

  • 两者都适合我,让我看看你的解决方案。
  • 它的工作,但bhanu首先回答,所以我会接受他的回答。 +1
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多