How do I validate TextFields in an UIAlertController?

后端 未结 10 2285
不思量自难忘°
不思量自难忘° 2020-12-14 08:54

Can anyone tell me how to validate UITextFields inside of a UIAlertController?

I need it to prevent the user from clicking \"Save\" unless

10条回答
  •  爱一瞬间的悲伤
    2020-12-14 09:22

    You can use below code to validate TextFields in an UIAlertController :-

    Step 1:

    Declare "email_TF" to your viewcontroller.h 
    
    for example: 
        @property(strong,nonatomic)UITextField *email_TF;
    

    Step 2:

    UIAlertController *alert= [UIAlertController alertControllerWithTitle:@"Forgot Password?" message:nil preferredStyle:UIAlertControllerStyleAlert];
    [alert addTextFieldWithConfigurationHandler: ^(UITextField *textField){
        textField.placeholder= @"Enter Your Valid Email";
        textField.autocorrectionType= UITextAutocorrectionTypeYes;
        textField.keyboardType= UIKeyboardTypeEmailAddress;
    
        email_TF= textField;
    }];
    

    Step 3:

    UIAlertAction *noButton= [UIAlertAction actionWithTitle:@"No, thanks" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action){
        //Handel no, thanks button
    }];
    [alert addAction:noButton];
    
    UIAlertAction *yesButton= [UIAlertAction actionWithTitle:@"Yes, please" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){
        //Handel your yes please button action here
        NSLog(@"%@", email_TF.text);
    
        if(email_TF.text.length>0){//
    
            NSString *emailString= email_TF.text;
            NSString *emailReg= @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
            NSPredicate *emailTest= [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailReg];
    
            if(([emailTest evaluateWithObject:emailString]!=YES) || [emailString isEqualToString:@""]){
    
                UIAlertView *loginalert= [[UIAlertView alloc] initWithTitle:@"Forgot Password !" message:@"\nPlease enter valid Email (example@example.com format) ." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
                [loginalert show];
    
            }else{
    
                NSLog(@"your TextField successfully validated");
    
            }
        }else{
    
            UIAlertView *alert= [[UIAlertView alloc] initWithTitle:@"Forgot Password !" message:@"\nPlease Enter Your Email..." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
    
        }
    
    }];
    
    [alert addAction:yesButton];
    

    Step 4:

    [self presentViewController:alert animated:YES completion:nil];
    

提交回复
热议问题