问题与UIActionSheet

当我运行我的应用程序,我点击button的行动表出现这样的:

提交由其超级视图剪辑的操作表。 一些控件可能不响应触摸。 在iPhone上尝试 – [UIActionSheet showFromTabBar:]或 – [UIActionSheet showFromToolbar:]而不是 – [UIActionSheet showInView:]。

我该如何解决?

试试这个,它对我完美的工作:

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

你可以尝试[MyActionSheet showInView:super.view]; 或者如果你有一个UITabBar或者UIToolbar,那么就可以使用[MyActionSheet showFromTabBar:self.tabBarController.tabBar];[MyActionSheet showFromToolBar:self.toolbar];

应该解决使用[actionSheet showInView:self.parentViewController.view]; 而不是self.view如果你使用的是UINavigationViewController因为这个控制器的顶部导航栏是默认的。

  [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); 

这应该解决问题。

我解决了我几乎相同的情况:

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

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

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

另一个类似的解决scheme,为我工作与UIPageViewController – > UINavigationViewController – > TableViewController结构,是:

 [actionSheet showInView:self.view.superview]; 

用这个:

 [actionSheet showInView:self.view.window]; 

这将迫使操作表显示在导航栏上方并响应所有的敲击。 但是请注意,如果您使用一些左/右滑动菜单库,则可能导致actionSheet在屏幕外显示。 只是testing…

我尝试了所有上述的答案无济于事。 最终,我发现唯一的解决办法是减less操作表上的项目数量,这些项目已经溢出。

下面是Swift版本:

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