2016-11-24 3 views
-1

У меня есть сценарий, как, в первой установке приложения, пользователь должен просматривать UIAlertViewController с UITextField, пользователь должен ввести электронный идентификатор, если это действительно уволить UIAlertViewController, еще не отклоняя что UIAlertViewController нужно подсказывать другое UIAlertViewController Высказывание «Введите действительный идентификатор электронной почты», как это сделать?AlertView с TextField в DidFinishLaunchingWithOptions

+2

но почему вы хотите в DidFinishLaunching –

+0

Потому что это должно быть как один раз появляться при первой установке @NarendraPandey – Ganesh

ответ

1

Добавить некоторую логику для вашего didFinishLaunchingWithOptions.

Здесь Сценарий заключается в том, что он будет первым prsent Alert say Введите свой адрес электронной почты. При вводе электронной почты и нажмите «ОК», проверьте, действительно ли электронная почта действительна или нет. , если он не действителен, присутствует другое сообщение, отображающее ваше электронное письмо. пока что ваше первое предупреждение будет отклонено в то время. когда вы снова нажмете OK из AlertError. Опять же, он отобразит AlertController вашего текстового поля электронной почты.

-(void)Alert{ 

    UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @"Your Email" message: @"Enter Your Email"preferredStyle:UIAlertControllerStyleAlert]; 

    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
     textField.placeholder = @"E-mail"; 
     textField.textColor = [UIColor blueColor]; 
     textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
     textField.borderStyle = UITextBorderStyleRoundedRect; 
    }]; 

    [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
     NSArray * textfields = alertController.textFields; 
     UITextField * Email = textfields[0]; 

     if ([self validateEmailWithString:Email.text]) { 
     }else{ 
      UIAlertController *alertError = [UIAlertController alertControllerWithTitle:@"Error" message:nil preferredStyle:UIAlertControllerStyleAlert]; 

      [alertError addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) 
       { 
      [self dismissViewControllerAnimated:YES completion:nil]; 

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

      }]]; 

      [self presentViewController:alertError animated:YES completion:nil]; 
     } 
    }]]; 
    [self presentViewController:alertController animated:YES completion:nil]; 

} 
- (BOOL)validateEmailWithString:(NSString*)checkString 
{ 
    BOOL stricterFilter = NO; 
    NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}"; 
    NSString *laxString = @"[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*"; 
    NSString *emailRegex = stricterFilter ? stricterFilterString : laxString; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    return [emailTest evaluateWithObject:checkString]; 
} 

Это будет работать идеально для вас.

enter image description here

enter image description here

Теперь, если есть ошибка снова присутствует оповещение по электронной почте.

+0

Отличная работа @Narendra Pandey, это сработало, спасибо. – Ganesh

1

Пожалуйста, напишите об этом в AppDelegate.m.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 



    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" 
                message:@"Message" 
                delegate:self 
              cancelButtonTitle:@"Done" 
              otherButtonTitles:nil]; 
    alert.tag = 1000; 
    alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
    [alert show]; 

    return YES; 
} 
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    if (alertView.tag == 1000) { 
     NSLog(@"%@", [alertView textFieldAtIndex:0].text); 
     NSString *str = [alertView textFieldAtIndex:0].text; 
     if ([str isEqualToString:@"your string"]) { 

      //do what ever you want. 
     }else{ 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wrong Email" 
                  message:@"Please try again" 
                  delegate:self 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 
      alert.tag = 1001; 
      [alert show]; 

     } 
    } 

} 
+0

Это будет работать для вас или нет? – Sanjukta

+0

Несомненно, я попробую и дам вам знать @Krishna – Ganesh

0

Добавить делегат для UIActionSheet и TextField в AppDelegate.h в

@interface AppDelegate : UIResponder <UIApplicationDelegate, UIActionSheetDelegate> 

Добавить делегат для UIActionSheet и TextField в AppDelegate в качестве первой проверки ИДК пользователь открывает приложение для того времени. Для Делая это, вы можете вы можете использовать этот код в методе AppDelegate's applicationDidFinishLaunching:

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) 
    { 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
//Now set up an alertView with textField: 
UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:@"ALERT!!!" message:@“Enter Email ID” delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; 
      alertView1.alertViewStyle = UIAlertViewStyleSecureTextInput; 
      self.passwordField = [alertView1 textFieldAtIndex:0]; 
      [alertView1 setTag:10003]; 
      self.passwordField.keyboardType=UIKeyboardTypeAlphabet; 
      [alertView1 show]; 
} 
} 

Теперь создан метод делегата для alertView как:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if(alertView.tag == 10003) { 

     if (buttonIndex==1) { 
      [self.passwordField resignFirstResponder]; 
      NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    if ([emailTest evaluateWithObject:email]) 
    { 
    //Do nothing 

    } 
      else { 
       //Show alert View for failed case 
       UIAlertView *al = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Please Enter Valid Email" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
       [al show]; 
       al.tag = 10004; 
      } 
     }