【发布时间】:2011-05-26 07:30:16
【问题描述】:
当我运行我的应用程序并单击操作表按钮时,会出现:
呈现由其超级视图剪辑的操作表。某些控件可能无法响应触摸。在 iPhone 上尝试 -[UIActionSheet showFromTabBar:] 或 -[UIActionSheet showFromToolbar:] 而不是 -[UIActionSheet showInView:]。
我该如何解决?
【问题讨论】:
标签: iphone uiactionsheet
当我运行我的应用程序并单击操作表按钮时,会出现:
呈现由其超级视图剪辑的操作表。某些控件可能无法响应触摸。在 iPhone 上尝试 -[UIActionSheet showFromTabBar:] 或 -[UIActionSheet showFromToolbar:] 而不是 -[UIActionSheet showInView:]。
我该如何解决?
【问题讨论】:
标签: iphone uiactionsheet
这是 Swift 版本:
actionSheet.showInView(UIApplication.sharedApplication().keyWindow)
【讨论】:
我尝试了以上所有答案均无济于事。最终,我发现唯一的解决方案是减少操作表上的项目数量,这会溢出。
【讨论】:
使用这个:
[actionSheet showInView:self.view.window];
这将强制操作表显示在导航栏上方并响应所有点击。但是请注意,如果您使用一些左/右滑动菜单库,这可能会导致 actionSheet 显示在屏幕外。只是测试...
【讨论】:
另一个类似的解决方案是:
[actionSheet showInView:self.view.superview];
【讨论】:
[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);
这应该可以解决问题。
【讨论】:
请记住,您的工具栏可能是导航控制器的一部分。你可以通过self.navigationController.toolbar访问它
【讨论】:
试试这个,它非常适合我:
[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
【讨论】:
您可以尝试[MyActionSheet showInView:super.view];,或者如果您有 UITabBar 或 UIToolbar,那么按照它的建议,您可以使用 [MyActionSheet showFromTabBar:self.tabBarController.tabBar]; 或 [MyActionSheet showFromToolBar:self.toolbar];
【讨论】:
我通过以下方式解决了几乎相同的情况:
YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[actionSheet showFromTabBar:delegate.tabBarController.tabBar];
假设您使用 TabBarController xCode 模板作为开始。
【讨论】:
如果您使用UINavigationViewController,则应该解决使用[actionSheet showInView:self.parentViewController.view]; 而不是self.view,因为此控制器默认具有顶部导航栏。
【讨论】: