Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在警报的文本字段下显示自定义错误消息?_Ios_Objective C_Iphone_Xcode - Fatal编程技术网

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(@“格式错误”);[自我呈现视图控制器:警报动画:是完成:无];如果在两种情况下都出现,则立即在循环中发出警报。是的。它将在循环中出现,但单击“提交”按钮后,它将自动退出“提交”按钮单击“提交”按钮后,它将自动退出当前警报视图,仅当电子邮件格式错误时,只有警报视图才会自动调用。它不会创建警报视图堆栈。您为什么不尝试自定义卡片组查看以输入密码,很容易验证和取消密码。