TVOS 需要按下 2 次菜单按钮才能从根控制器退出到仪表板
TVOS requires 2 Menu Button Presses to exit to Dashboard from Root Controller
我负责更新现有的 TVOS 项目。我 运行 遇到了一些麻烦。
如果我在根控制器上(即:在应用程序启动时显示的控制器。)
按“菜单”按钮会将我转到空白 gray/white 屏幕。第二次按菜单 returns 我进入仪表板。
我曾尝试使用层次结构查看器来查看 gray/white 屏幕到底是什么,但没有帮助。 gray/white 屏幕由一个带有 UILayoutContainerView 的 UIWindow 组成,其中包含一个 UINavigationTransitionView。我找不到关于它的其他可识别特征来帮助我确定到底发生了什么。
应用程序启动时会加载一个 UINavigationController,它会呈现一个 UIViewController。 Nav 控制器和呈现的 ViewController 都不会覆盖 pressesBegin、pressesEnd 或分配任何 gestureRecongnizers 以拦截或以其他方式覆盖菜单按钮功能。
据我所知,该应用程序应该表现出默认的菜单按钮按下行为,即导航回根目录,然后在根目录退出一次仪表板。也就是说,菜单按钮确实会按原样向后导航。它只是不会在根目录下终止一次应用程序。当它进入 gray/white 屏幕时 none 的功能:applicationWill... 将执行,直到第二次按下遥控器上的菜单按钮。该应用程序也将恢复到此 gray/white 屏幕。
My question is thus, what is going on here. Baring that how can I
debug this behavior more effectively.
我已尝试对这个解释进行透彻。我认识到没有代码事情会变得很困难。事情是,我不知道什么代码是相关的,所以将发布任何可能有用的特定代码的指导或请求。
谢谢。
让我们调用您的导航控制器 A
和呈现的视图控制器 B
。
听起来好像 A
实际上没有任何 children,或者它有一个空白的视图控制器,因为它只有 child。我假设您从不在 A
上调用 pushViewController(_, animated:)
?当您使用 init(rootViewController:)
创建它时,您传递给 A
的是什么?
当您第一次按下菜单按钮时,UIKit 会自动关闭显示的视图控制器 B
,并显示空的导航控制器 A
。您看到的灰色屏幕实际上是 tvOS 壁纸,它在应用程序的视图层次结构之外呈现。
然后第二次按下菜单按钮实际上会导致应用退出,因为导航控制器 A
没有更多 children 可以弹出。
所以听起来你应该:
添加视图控制器 B
作为 A
的 child,而不是显示它。
或者,将 B
设置为根视图控制器并忘记 A
。
我负责更新现有的 TVOS 项目。我 运行 遇到了一些麻烦。
如果我在根控制器上(即:在应用程序启动时显示的控制器。)
按“菜单”按钮会将我转到空白 gray/white 屏幕。第二次按菜单 returns 我进入仪表板。
我曾尝试使用层次结构查看器来查看 gray/white 屏幕到底是什么,但没有帮助。 gray/white 屏幕由一个带有 UILayoutContainerView 的 UIWindow 组成,其中包含一个 UINavigationTransitionView。我找不到关于它的其他可识别特征来帮助我确定到底发生了什么。
应用程序启动时会加载一个 UINavigationController,它会呈现一个 UIViewController。 Nav 控制器和呈现的 ViewController 都不会覆盖 pressesBegin、pressesEnd 或分配任何 gestureRecongnizers 以拦截或以其他方式覆盖菜单按钮功能。
据我所知,该应用程序应该表现出默认的菜单按钮按下行为,即导航回根目录,然后在根目录退出一次仪表板。也就是说,菜单按钮确实会按原样向后导航。它只是不会在根目录下终止一次应用程序。当它进入 gray/white 屏幕时 none 的功能:applicationWill... 将执行,直到第二次按下遥控器上的菜单按钮。该应用程序也将恢复到此 gray/white 屏幕。
My question is thus, what is going on here. Baring that how can I debug this behavior more effectively.
我已尝试对这个解释进行透彻。我认识到没有代码事情会变得很困难。事情是,我不知道什么代码是相关的,所以将发布任何可能有用的特定代码的指导或请求。
谢谢。
让我们调用您的导航控制器 A
和呈现的视图控制器 B
。
听起来好像 A
实际上没有任何 children,或者它有一个空白的视图控制器,因为它只有 child。我假设您从不在 A
上调用 pushViewController(_, animated:)
?当您使用 init(rootViewController:)
创建它时,您传递给 A
的是什么?
当您第一次按下菜单按钮时,UIKit 会自动关闭显示的视图控制器 B
,并显示空的导航控制器 A
。您看到的灰色屏幕实际上是 tvOS 壁纸,它在应用程序的视图层次结构之外呈现。
然后第二次按下菜单按钮实际上会导致应用退出,因为导航控制器 A
没有更多 children 可以弹出。
所以听起来你应该:
添加视图控制器
B
作为A
的 child,而不是显示它。或者,将
B
设置为根视图控制器并忘记A
。