【问题标题】:Issue with UIActionSheetUIActionSheet 的问题
【发布时间】:2011-05-26 07:30:16
【问题描述】:

当我运行我的应用程序并单击操作表按钮时,会出现:

呈现由其超级视图剪辑的操作表。某些控件可能无法响应触摸。在 iPhone 上尝试 -[UIActionSheet showFromTabBar:] 或 -[UIActionSheet showFromToolbar:] 而不是 -[UIActionSheet showInView:]。

我该如何解决?

【问题讨论】:

    标签: iphone uiactionsheet


    【解决方案1】:

    这是 Swift 版本:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        使用这个:

        [actionSheet showInView:self.view.window];
        

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

        【讨论】:

          【解决方案4】:

          另一个类似的解决方案是:

          [actionSheet showInView:self.view.superview];
          

          【讨论】:

            【解决方案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);
            

            这应该可以解决问题。

            【讨论】:

            • 谢谢,这个是唯一能帮我解决的问题(在有和没有导航控制器的情况下都有一些额外的工作)。 A 在自定义 iOS6 + iOS7 窗口配置时遇到了类似的问题,对于 iOS7,您将窗口向下移动 20 点并保持原样。
            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              试试这个,它非常适合我:

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

              【讨论】:

              • 完美 :)) 正是我想要的!!
              • @VSN 如果您以横向模式打开操作表,则会出现此问题。 actionsheet 将从侧面进入屏幕,并旋转 90 度。你有什么解决办法吗?因为否则它真的很有帮助。 tia。
              • 非常相似,但代码更少,更容易记住,你可以这样做:[actionSheet showInView:self.view.window]
              【解决方案8】:

              您可以尝试[MyActionSheet showInView:super.view];,或者如果您有 UITabBar 或 UIToolbar,那么按照它的建议,您可以使用 [MyActionSheet showFromTabBar:self.tabBarController.tabBar];[MyActionSheet showFromToolBar:self.toolbar];

              【讨论】:

                【解决方案9】:

                我通过以下方式解决了几乎相同的情况:

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

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

                【讨论】:

                  【解决方案10】:

                  如果您使用UINavigationViewController,则应该解决使用[actionSheet showInView:self.parentViewController.view]; 而不是self.view,因为此控制器默认具有顶部导航栏。

                  【讨论】:

                  • 或 self.navigationController.view 谢谢
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-07-20
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-03-10
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多