uialertviewios8.3

Keyboard will appeared automatically in ios 8.3 while displaying alertview or alertcontroller


I have updated Xcode 6.3 and ios8.3 check my code. then it gives me weird result.

here is first screen of my demo app. here is one textfield. when I type somethin in textfield keyboard open.

enter image description here

after typing completed. I have clicked on show alert button. I have displayed alert and output will be following.

enter image description here

After click on cancel. I have displayed another alert then weird result keyboard should not open but when click on cancel button. display another alert and keyboard will appear automatically.

here is next screen output

enter image description here

following is the code

- (IBAction)MethodShowAlert:(id)sender 
 {

[tmptxtField resignFirstResponder];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Check Alert textField" message:@"keyboard should not be open" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil];
[alert show];
 }

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
  {
    [self showCustomAlertWithTitle:nil];
  }


-(void)showCustomAlertWithTitle:(NSString *)title{
      UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Now Check" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil];

      [alertView show]
  }

Solution

  • Yep, it's strange.

    But since iOS 8, I suggest to use the UIAlertController instead of UIAlertView.

    Replace your code with this one:

    - (IBAction)MethodShowAlert:(id)sender
    {
    
        [tmptxtField resignFirstResponder];
    
        UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"Check Alert textField"
                                                                                  message:@"keyboard should not be open"
                                                                           preferredStyle:UIAlertControllerStyleAlert];
    
        UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
                                                                style:UIAlertActionStyleDefault
                                                              handler:^(UIAlertAction *action) {
                                                                  [self showCustomAlertWithTitle:@"Now Check"];
                                                              }];
    
        [alertController addAction:cancelAction];
    
        [self presentViewController:alertController animated:YES completion:nil];
    }
    
    
    -(void)showCustomAlertWithTitle:(NSString *)title{
    
        UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title
                                                                                  message:nil
                                                                           preferredStyle:UIAlertControllerStyleAlert];
    
        [self presentViewController:alertController animated:YES completion:nil];
    }
    

    The keyboard will not show after the click on the button.