任何人都可以建议我在提醒和取消按钮的警报中有一个电子邮件字段。
我有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);
答案 0 :(得分:0)
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,您无法按住该对话框,但可以从提交按钮操作再次调用它。
if ( returnValue == 0) {
NSLog(@"correct format");
}
else{
NSLog(@"wrong format");
[self presentViewController:alert animated:YES completion:nil];
}