我有一个UITabBarController的基本应用程序,它包含2个UIViewControllers。 第一个ViewController中有一个UIButton。
我试图隐藏tabBar菜单,并在应用启动时关注按钮。 我将tabBar设置为隐藏,并且在启动时不会按预期显示。不幸的是,按钮没有焦点。
根据我对Apple doc的理解,"焦点链"引擎将焦点设置在窗口层次结构中的第一个可见和可聚焦项目上。
任何人都可以帮我这个吗? 谢谢。
答案 0 :(得分:1)
解决方案1。 我想你能做什么:
1.Subclass或Customize TabBarController和set 在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; }
希望它有所帮助。虽然它为我工作
您的焦点引擎将rootView控制器作为TabBarController,然后请求首选焦点视图,该视图以UITabBarItem的形式返回,我们需要对该子类进行非聚焦并将canBecomeFocus返回NO。
如果你想改变firtsViewController中元素的焦点,那么你可以覆盖func preferredFocusView并重新定义你想要聚焦的视图,而不是preferredFocusView
解决方案2.只需将根视图控制器设置为不带TabBarController的HomeViewController,并从第二页嵌入TabBarController。这是因为无论如何你不需要在第一页上使用TabBar,为什么需要关注它。
如果您从AppDelegate或已加载但具有焦点的视图中隐藏,TabBar将设置为隐藏。