Вот моя ситуация:Как можно временно отключить tvOS UITabBarController
У меня есть приложение tvOS где базовая навигация является UITabBarController. Каждый контроллер корневого представления, на который ссылается UITabBarController, является UINavigationController, который затем обрабатывает нажатие ViewControllers в стеке. Когда конкретный ViewController (содержащий CollectionView) активен, мне нужно предотвратить способность tvOS UITabBarController по умолчанию для получения фокуса.
Я попытался спрятать TabBar вручную на ViewWillAppear, подклассифицируя TabBar и переопределяя предпочтительный вид фокусировки. В большинстве случаев дезактивация фокуса в TabBar приводит к деактивации фокуса в его activeViewController. В настоящее время мое решение заключается в переопределении метода делегирования «shouldUpdateFocusInContext» в моем ViewController и предотвращении любых фокусов на представлениях, которые не являются UICollectionViews. Это работает для этого одного случая, но, очевидно, является субоптимальным и взломанным решением.
override func shouldUpdateFocusInContext(context: UIFocusUpdateContext) -> Bool {
guard let nextFocusView = context.nextFocusedView else {return false}
if nextFocusView.isKindOfClass(UICollectionViewCell.classForCoder()) {
return true
} else {
return false
}
}
Кто-нибудь есть какие-либо лучшие идеи о том, чтобы временно предотвратить TabBar в UITabBarController от даже отображения, когда пользователь пойло на пульте tvOS?