Ios 如何在警报的文本字段下显示自定义错误消息?
任何人都可以提供建议,因为我在一个带有提交和取消按钮的通知中有一个电子邮件字段 我有一个Ios 如何在警报的文本字段下显示自定义错误消息?,ios,objective-c,iphone,xcode,Ios,Objective C,Iphone,Xcode,任何人都可以提供建议,因为我在一个带有提交和取消按钮的通知中有一个电子邮件字段 我有一个Bool函数,它返回我在UIAlertAction中使用的电子邮件验证结果,并用NSLog语句显示自定义消息 我的问题是,当用户按下提交按钮时,如果bool值为零,我想在UITextField中显示输入的电子邮件文本,并在文本字段底部显示一条红色错误消息。在bool值返回为1之前,警报也应可见 代码: UIAlertController * alert= [UIAlertController
Bool
函数,它返回我在UIAlertAction
中使用的电子邮件验证结果,并用NSLog
语句显示自定义消息
我的问题是,当用户按下提交按钮时,如果bool
值为零,我想在UITextField
中显示输入的电子邮件文本,并在文本字段底部显示一条红色错误消息。在bool
值返回为1之前,警报也应可见
代码:
UIAlertController * alert= [UIAlertController
alertControllerWithTitle:@"Forgot Password"
message:@"" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* submit = [UIAlertAction
actionWithTitle:@"Submit"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
//Do Some action here
UITextField *alertTextField = alert.textFields.firstObject;
NSLog(@"%d",[self validateEmailWithString:alertTextField.text]);
int returnValue = (int)[self validateEmailWithString:alertTextField.text];
NSLog(@"interger value %i",returnValue);
if ( returnValue == 1) {
NSLog(@"correct format");
}else
NSLog(@"wrong format");
}];
UIAlertAction* cancel = [UIAlertAction
actionWithTitle:@"Cancel"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:submit];
[alert addAction:cancel];
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.placeholder = @"Enter your E-Mail Address";
_enteredEMail = textField.text;
NSLog(@"%@ntered Email Address",textField.text);
UIAlertController不支持文本字段底部的红色错误消息,但您可以更改文本字段的颜色 添加此方法以检查textField.text的长度,或者您可以添加电子邮件验证检查,然后启用提交按钮
submit.enabled = NO; //after submit button UIAlertAction set
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *finalString = [textField.text stringByReplacingCharactersInRange:range withString:string];
[submit setEnabled:(finalString.length >= 1)];
// for textField border colour
textField.layer.borderColor=[[UIColor redColor]CGColor];
textField.layer.borderWidth= 2.0f;
return YES;
}
如果returnValue==0,您不能保持对话框,但可以通过submit按钮操作再次调用它
if ( returnValue == 0) {
NSLog(@"correct format");
}
else{
NSLog(@"wrong format");
[self presentViewController:alert animated:YES completion:nil];
}
另请参阅。UIAlertController不支持文本字段底部的红色错误消息,但您可以更改文本字段的颜色。好的,这很好,但如何保持对话框(警报)直到在文本字段中收到正确的输入?您可以在提交按钮操作时调用UIAlertAction,或者更简单的方法是验证文本并启用提交按钮。如果(returnValue==1){NSLog(@“正确格式”);[alert DismissViewControllerInitiated:YES completion:nil];}其他NSLog(@“格式错误”);[自我呈现视图控制器:警报动画:是完成:无];如果在两种情况下都出现,则立即在循环中发出警报。是的。它将在循环中出现,但单击“提交”按钮后,它将自动退出“提交”按钮单击“提交”按钮后,它将自动退出当前警报视图,仅当电子邮件格式错误时,只有警报视图才会自动调用。它不会创建警报视图堆栈。您为什么不尝试自定义卡片组查看以输入密码,很容易验证和取消密码。