【发布时间】: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