iosios7uialertviewuiactionsheetuialertviewdelegate

iOS 7: UIAlertView created in UIActionSheet delegate function cannot auto rotate


The issue only can be reproduced in iOS 7.

In the delegate function:- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex, if a UIAlertView is created, the alert view cannot auto rotate. Here is the sample code:

- (IBAction)buttonTapped:(id)sender
{
    UIActionSheet *actionSheet = [[UIActionSheet alloc]
                                  initWithTitle:@"action sheet"
                                  delegate:self
                                  cancelButtonTitle:@"cancel"
                                  destructiveButtonTitle:@"ok"
                                  otherButtonTitles:nil];
    [actionSheet showInView:self.view];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"alert"
                          message:nil
                          delegate:self
                          cancelButtonTitle:@"ok"
                          otherButtonTitles:nil];
    [alert show];
}

Is this a bug of iOS 7? If yes, is there any way to make the alert view auto rotate with the other view in the screen?


Solution

  • Try presenting the alertview from another delegate method of UIActionSheet. This does work:

    - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
    

    This surely looks like a bug in iOS7 :)