UIActionSheet问题

时间:2010-12-16 02:33:24

标签: iphone uiactionsheet

当我运行我的应用程序时,单击按钮以显示操作表:

  

显示由其超级视图剪切的操作表。某些控件可能无法响应触摸。在iPhone上尝试 - [UIActionSheet showFromTabBar:]或 - [UIActionSheet showFromToolbar:]而不是 - [UIActionSheet showInView:]。

我该如何解决?

10 个答案:

答案 0 :(得分:61)

试试这个,它对我很有用:

[actionSheet showInView:[UIApplication sharedApplication].keyWindow];

答案 1 :(得分:28)

您可以尝试[MyActionSheet showInView:super.view];或者如果您有UITabBar或UIToolbar,那么根据建议,您可以使用[MyActionSheet showFromTabBar:self.tabBarController.tabBar];[MyActionSheet showFromToolBar:self.toolbar];

答案 2 :(得分:12)

如果您使用[actionSheet showInView:self.parentViewController.view];,则应该使用self.view代替UINavigationViewController,因为此控制器默认使用顶部导航栏。

答案 3 :(得分:5)

    [sheet showInView:[UIApplication sharedApplication].keyWindow];
    sheet.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height-sheet.frame.size.height, [UIScreen mainScreen].bounds.size.width, sheet.frame.size.height);

这应该可以解决问题。

答案 4 :(得分:1)

我通过以下方式解决了我几乎相同的案件:

YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[actionSheet showFromTabBar:delegate.tabBarController.tabBar];

假设您使用TabBarController xCode模板作为开始。

答案 5 :(得分:0)

请记住,您的工具栏可能是导航控制器的一部分。您可以使用self.navigationController.toolbar

访问它

答案 6 :(得分:0)

另一个类似的解决方案,它适用于我的UIPageViewController - > UINavigationViewController - > TableViewController结构是:

[actionSheet showInView:self.view.superview];

答案 7 :(得分:0)

使用此:

[actionSheet showInView:self.view.window];

这将强制操作表显示在导航栏上方并响应所有点击。但请注意,如果使用某些左/右滑动菜单库,这可能会导致actionSheet显示在屏幕外。试试......

答案 8 :(得分:0)

我尝试了上述所有答案都无济于事。最终,我发现唯一的解决方案是减少操作表上的项目数量,这些项目正在溢出。

答案 9 :(得分:0)

继承Swift版本:

actionSheet.showInView(UIApplication.sharedApplication().keyWindow)