【问题标题】:Adding subview and then keep it visible on top across app添加子视图,然后在整个应用程序顶部保持可见
【发布时间】:2013-08-16 20:37:54
【问题描述】:

背景和目标:

在我现有的应用程序中,我正在尝试向用户提供语音消息功能。这个想法是选择性地从应用程序的任何地方向用户提供语音消息的通用访问(受 facebook 消息的启发)。到目前为止,我在显示我的迷你消息仪表板并点击它在 iPhone 和 iPad 上打开自定义消息(弹出框)视图方面取得了部分成功。

我在应用程序键窗口上添加了我的迷你仪表板子视图,因此在应用程序内导航时它在所有视图(顶部)中可见。

[application.keyWindow addSubview:self.messageDashBoardVC.view];

这使得它自动(开箱即用)出现在应用程序中的模态对话框(大部分)之上..

[self presentViewController:modelVC Animation:YES completion:nil]

具体问题说明:

然而.. 在 iPad 上,当视图控制器以

模态呈现时

modalPresentationStyle = UIModalPresentationFormSheet

UIModalPresentationPageSheet 迷你仪表板隐藏在模式对话框(工作表)后面。但是,我希望用户在处理这些工作表时访问语音功能(迷你仪表板和弹出视图)。

我现有的应用程序使用了很多这样的模态对话框(表格)。

一般问题说明: 是否有任何可重用的组件/源代码可以做同样的事情,因为我认为方向处理也将是一个棘手的/相当的工作与我的方法?您认为我的方法还有其他问题吗?

【问题讨论】:

    标签: ios ipad modal-dialog uiwindow topmost


    【解决方案1】:

    我发现上面的特定问题陈述取得了一些成功:-

    模态视图显示(添加)到同一个窗口,所以我只是像这样将我的迷你仪表板视图放在前面..

    UIWindow *appDelegateWindow = [[[UIApplication sharedApplication] delegate] window];
    
    UIView *miniView = (UIView *)[appDelegateWindow viewWithTag:12221]; // 12221 is tag of mini dashboard view.
    
    [appDelegateWindow bringSubviewToFront:miniView];
    

    但是,我仍然期待您对我的方法的专家意见,并考虑到方向和其他潜在挑战,我愿意接受其他方法。

    接下来 - 我正在努力将我的自定义弹出视图放在模态表前面。截至目前,点击迷你视图会打开消息弹出框,但位于模式表后面。

    【讨论】:

      【解决方案2】:

      self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

      MALoginViewController *login=[[MALoginViewController alloc]initWithNibName:@"MALoginViewController" bundle:nil];
       MANowPlayingViewController *nav=[[MANavigationController alloc]initWithRootViewController:home];
      [self.window setRootViewController:nav];
      self.window.backgroundColor = [UIColor whiteColor];
      [self.window makeKeyAndVisible];
      

      这里 MANowPlayingViewController 是 UINavigationController 的类..所以您必须为 UINavigationController 创建单独的类...然后将其设置为 Window RootviewController..

      无论您在该 UINavigationController 类中提供什么,都将显示应用程序中的所有页面。您可以在此类中处理所有常见代码。例如,如果您在该 NavigationBar 上添加 UIButton,它将显示在所有类中...

      谢谢..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多