问题与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)