2010-12-16 57 views
36

当我运行我的应用程序,我点击actionsheet按钮会出现这样的:通过它的父剪裁问题与UIActionSheet

呈现动作片。某些控件可能不会响应触摸。在iPhone上尝试 - [UIActionSheet showFromTabBar:]或 - [UIActionSheet showFromToolbar:]而不是 - [UIActionSheet showInView:]。

我该如何解决?

回答

28

你可以尝试[MyActionSheet showInView:super.view];或者如果你有中的UITabBar一样或UIToolbar然后,因为它表明,你可以使用[MyActionSheet showFromTabBar:self.tabBarController.tabBar];[MyActionSheet showFromToolBar:self.toolbar];

12

应该解决,如果你正在使用UINavigationViewController因为该控制器使用[actionSheet showInView:self.parentViewController.view];代替self.view顶部导航栏作为默认值。

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

假设你使用TabBarController Xcode的模板作为开始:

+0

或self.navigationController.view 感谢 – LolaRun 2014-06-27 14:16:28

1

我的决定,我几乎最相同的情况。

61

试试这个,它为我工作完美:

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

谢谢你,这个技术解决了我的问题。 – 2012-10-16 03:39:16

+0

最受欢迎亲爱的! – VSN 2012-10-22 13:12:32

+0

完美:))只是我在找什么! – filou 2013-03-01 14:29:14

0

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

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

此访问应该解决的问题。

+0

谢谢,这是我唯一能解决的问题(只需稍加添加即可使用导航控制器)。 A与iOS6 + iOS7自定义窗口配置有类似的问题,在iOS7中,您将窗口向下移动20个点,并保持原样。 – 2013-12-04 07:20:37

0

另一个类似的解决方案,它具有UIPageViewController为我工作 - > UINavigationViewController - > TableViewController结构是:

[actionSheet showInView:self.view.superview]; 
0

使用此:

[actionSheet showInView:self.view.window]; 

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

0

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

0

继承人的雨燕版本:

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