Решения было использовать метод в didUpdateFocusInContext вида контроллера: withAnimationCoordinator: с этим кодом:
static NSString *kUITabBarButtonClassName = @"UITabBarButton";
NSString *prevFocusViewClassName = NSStringFromClass([context.previouslyFocusedView class]);
NSString *nextFocusedView = NSStringFromClass([context.nextFocusedView class]);
// The tabbar is going to disappear
if ([prevFocusViewClassName isEqualToString:kUITabBarButtonClassName] &&
![nextFocusedView isEqualToString:kUITabBarButtonClassName]) {
[self.view layoutIfNeeded];
self.constraintScrollViewCenterY.constant -= self.tabBarController.tabBar.frame.size.height;
[coordinator addCoordinatedAnimations:^{
[self.view layoutIfNeeded];
} completion:nil];
// The tabbar is going to appear
} else if (![prevFocusViewClassName isEqualToString:kUITabBarButtonClassName] &&
[nextFocusedView isEqualToString:kUITabBarButtonClassName]) {
[self.view layoutIfNeeded];
self.constraintScrollViewCenterY.constant += self.tabBarController.tabBar.frame.size.height;
[coordinator addCoordinatedAnimations:^{
[self.view layoutIfNeeded];
} completion:nil];
}
где self.constraintScrollViewCenterY это ограничение связано с вертикальным выравниванием зрения я хочу двигаться в соответствии с движением TabBar
Примечание: использование имени класса (kUITabBarButtonClassName) вместо [... класс] метод является из-за UITabBarButton является частным классом
Вы можете использовать viewController viewWillAppear для обнаружения вкладки. И вы можете отправить уведомление, или вы можете использовать делегат для его обнаружения в своем UITabBarController –
Но в TvOS можно отобразить вкладку без изменения контроллера вида (просто нажав кнопку меню или переместив uo с удаленной трак-панелью), и в этом случае Я не смогу обнаружить, что отображается панель вкладок. – rai212