iOS 7:在 UIActionSheet 委托函数中创建的 UIAlertView 无法自动旋转

Posted

技术标签:

【中文标题】iOS 7:在 UIActionSheet 委托函数中创建的 UIAlertView 无法自动旋转【英文标题】:iOS 7: UIAlertView created in UIActionSheet delegate function cannot auto rotate 【发布时间】:2013-10-21 09:43:41 【问题描述】:

这个问题只能在 ios 7 中重现。

在delegate函数中:- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex,如果创建了UIAlertView,则alert view不能自动旋转。下面是示例代码:

- (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];

这是 iOS 7 的错误吗?如果是,有没有办法让警报视图与屏幕中的其他视图一起自动旋转?

【问题讨论】:

【参考方案1】:

尝试从 UIActionSheet 的另一个委托方法呈现警报视图。这确实有效:

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

这肯定看起来像 iOS7 中的一个错误 :)

【讨论】:

以上是关于iOS 7:在 UIActionSheet 委托函数中创建的 UIAlertView 无法自动旋转的主要内容,如果未能解决你的问题,请参考以下文章

从 UIActionSheet 将信息传递给委托

如何从 iOS 7 中的 UIActionsheet 中删除分隔线?

类似于 iOS 7 Safari 的 UIActionSheet-like 控件

如何检测在表视图委托方法中调用的 UIActionSheet 按钮的点击?

iOS7中的UIActionSheet缺少背景

UIActionSheetdelegate 没有获得子视图