【问题标题】:Apple TV - Menu button returns to wrong screenApple TV - 菜单按钮返回错误屏幕
【发布时间】:2020-11-17 04:44:06
【问题描述】:

我有一个以启动页面开头的 Apple TV 应用。它播放一段短视频并进行一些设置网络。在这两个都完成后,我会自动将用户转换到登录页面,以便他们注册服务。

let langingPageVC = LandingPageViewController(nibName: nil, bundle: nil)

self.present(langingPageVC, animated: true, completion: {
    print("Transferred to landing page")
})

当用户从这一点点击菜单按钮时,就会出现问题。它们会自动返回到启动页面,应用程序只显示它在等待网络完成时显示的静态图像并停留在那里。然后用户可以再次按下菜单按钮并退出应用程序。如果用户重新进入应用程序,他们将在这个静态图像上,无法做任何事情。

我怎样才能让应用直接从我的登录页面进入后台,而不返回到 Splash 页面?我知道如何使用手势识别器检测菜单按下,但我似乎无法拨打电话让应用程序从那时起进入后台。

我尝试在完成块中从其父级中删除 Splash 页面,但没有成功。我看到了一些关于将页面设置为 keyWindow 的信息,但我在日志中收到一条消息,说不要这样做,系统应该处理它,但它也没有工作。

感谢任何帮助。

【问题讨论】:

    标签: ios swift uigesturerecognizer tvos apple-tv


    【解决方案1】:

    两种可能的选择:

    • 您可以将 LandingPageViewController 设置为 rootViewController,而不是从 SplashViewController 呈现 LandingPageViewController。这样一来,您的启动画面就不会出现在您的视图控制器堆栈中。
    • 在 LandingPageViewController 上方的单独窗口中显示 SplashViewController。视频播放完毕后,您可以关闭该窗口。

    【讨论】:

    • 我已经尝试添加:AppDelegate.delegate?.window?.rootViewController = self to viewDidAppear。我在日志中收到一条消息:[Window] 不再支持手动将 rootViewController 的视图添加到视图层次结构中。请允许 UIWindow 将 rootViewController 的视图添加到视图层次结构本身。
    • 没关系,我的问题是我仍在调用 presentviewcontroller 并尝试将 rootviewcontroller 设置为另一个视图控制器的子级。将其更改为:AppDelegate.delegate?.window?.rootViewController = landingPageVCAppDelegate.delegate?.window?.makeKeyAndVisible() 解决了问题
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多