UIActionSheet未在iOS 8中显示

时间:2014-09-26 14:27:29

标签: ios ios7 ios8 uiactionsheet

我可以在iOS 7中显示actionSheet,但无法在iOS 8环境中显示。有没有办法追踪?

  UIActionSheet *_actionSheet = [[UIActionSheet alloc] initWithTitle:@"Account"
                                                               delegate:self 
                                                      cancelButtonTitle:@"Close" 
                                                 destructiveButtonTitle:@"Log Out" 
                                                      otherButtonTitles:@"View Account", nil];

    [_actionSheet showInView:appDel.window];

5 个答案:

答案 0 :(得分:3)

UIActionSheet在iOS 8中已弃用。

enter image description here

要在iOS 8中创建和管理操作表,您应该使用UIAlertController和UIAlertControllerStyleActionSheet的preferredStyle。

请参阅此example

答案 1 :(得分:1)

UIAlertController * alert=   [UIAlertController
                             alertControllerWithTitle:@"Info"
                             message:@"You are using UIAlertController"
                             preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* ok = [UIAlertAction
                    actionWithTitle:@"OK"
                    style:UIAlertActionStyleDefault
                    handler:^(UIAlertAction * action)
                    {
                        [alert dismissViewControllerAnimated:YES completion:nil];

                    }];
UIAlertAction* cancel = [UIAlertAction
                        actionWithTitle:@"Cancel"
                       style:UIAlertActionStyleDefault
                       handler:^(UIAlertAction * action)
                       {
                           [alert dismissViewControllerAnimated:YES completion:nil];

                       }];

 [alert addAction:ok];
 [alert addAction:cancel];

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

答案 2 :(得分:0)

这显然是iOS 8中的一个回归。我已经提交了一个rdar,请也这样做。

与此同时,您可以使用类别或子类来修复它,您可以在其中检查视图是否为窗口,如果是,则在该窗口中获取rootViewController的视图并使用它。它会那样工作。

答案 3 :(得分:0)

当iOS 8问世时,我遇到了操作表问题。这可能是您所呈现的视图的问题。您能在实际视图而不是窗口中显示它吗?我首先在那里进行实验,最糟糕的情况是,将show方法包装在特定于iOS 7和8的内容中。我开始使用PSTAlertController来管理我的警报和操作表。它支持UIAlertView,UIActionSheet和U​​IAlertController。它将排除使用哪一个,并允许您访问按钮的阻止操作,同时仍然支持iOS 7和8.值得一看。

答案 4 :(得分:0)

如果其他人看到此问题,则问题实际上是由iOS 8和9在屏幕键盘上显示隐藏在后面引起的,因此您无法实际看到它。你只看到屏幕的其余部分变暗。天才。

简单的解决方案是在显示UIActionSheet

之前添加一行代码
[self.view endEditing:true];

这会取消屏幕键盘,让你的美丽动作表再次可见。