当我运行我的应用程序时,单击按钮以显示操作表:
显示由其超级视图剪切的操作表。某些控件可能无法响应触摸。在iPhone上尝试 - [UIActionSheet showFromTabBar:]或 - [UIActionSheet showFromToolbar:]而不是 - [UIActionSheet showInView:]。
我该如何解决?
答案 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)