如何从 UITabBarController 将初始焦点设置到 viewController 中的按钮?

How to set initial focus to a button in a viewController from a UITabBarController?

我有一个带有 UITabBarController 的基本应用程序,其中包含 2 个 UIViewController。 第一个 ViewController 里面有一个 UIButton。

我正在尝试隐藏 tabBar 菜单,并在应用程序启动时突出显示按钮。 我将 tabBar 设置为隐藏,但它没有按预期在启动时显示。不幸的是,按钮没有焦点。

据我从 Apple 文档中了解到,"focus chain" 引擎会将焦点设置在 window 层次结构中第一个可见且可聚焦的项目上。

谁能帮我解决这个问题? 谢谢。

解决方案一。 我认为你可以做什么 :

1.Subclass 或自定义 TabBarController 并设置 在 tabController

的 viewdidload 中设置 first launch = true
> override weak var preferredFocusedView: UIView? {   if
> (self.firstLaunch) {
>     self.firstLaunch = false;
>     return self.selectedViewController!.preferredFocusedView;   }   else {
>     let view  = super.preferredFocusedView
>     return view;   }

希望它 helps.It 对我有用

您的焦点引擎将 rootView 控制器作为 TabBarController,然后请求作为 UITabBarItem 返回的首选焦点视图,我们需要取消对 class 子 class 的焦点并将 canBecomeFocus 返回为 NO。

如果你想改变 firtsViewController 中元素的焦点,那么你可以覆盖 func preferredFocusView 并重新输入你想要聚焦的视图 else preferredFocusView

解决方案2。只需将根视图控制器设置为不带TabBarController 的HomeViewController,然后从第二页嵌入TabBarController。这是因为无论如何你不需要在第一页上使用 TabBar 为什么需要照顾它的焦点。

如果您从 AppDelegate 或加载但有焦点的视图中隐藏,TabBar 将设置为隐藏。