如何在标签中显示文本字段验证错误消息
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;
}
我是 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;
}