2016-02-04 2 views
1

Я разрабатываю приложение tvOS в быстром режиме. Я использую UITabBarController в приложении. Мое требование состоит в том, чтобы скрыть автоматическую заставку через 10 секунд, и фокус может перейти на AVPlayerViewController внутри элемента табуляции. Я попытался переопределить preferredFocusedView, но фокус не может перейти на AVPlayerViewController.Как изменить фокус программно в tvOS

func updateFocus() { 

    self.playerController.view.hidden = false 
    self.playerController.view.alpha = 1.0 
    self.playerController.view.userInteractionEnabled = true 
    self.playerController.view.layer.zPosition = 1.0 
    self.preferredFocusedView 
    setNeedsFocusUpdate() 
    updateFocusIfNeeded() 
} 

override var preferredFocusedView: UIView? { 

    return self.playerController.view 

} 

Просьба предложить мне, как программно перемещать фокус.

+1

убедитесь self.playerController.view.superView фокусирующейся –

+0

извините, я вернулся self.playerController.view. – vipulk617

+1

Поместите точку останова и проверьте, возвращает ли это представление true из canBecameFocus, вы можете сделать это, выполнив эту команду на консоли [view _whyIsThisViewNotFocusable] –

ответ

2

Издание является focus не в viewController в то время вместо того, чтобы сосредоточиться находится в tabBarController, так что я предлагаю вам это сделать что-то вроде этого, Создать TabBarController Подкласс и установить класс вашего tabController в раскадровке к этому классу, а затем в tabBarController subClass сделать что-то вроде этого.

#import "TabBarViewController.h" 

    @interface TabBarViewController() 

    @end 

    @implementation TabBarViewController 

    - (void)viewDidLoad { 
     [super viewDidLoad]; 
     self.tabBar.alpha = 0; 
     // set alpha = 1 back again when you need. 
    } 

    - (UIView*)preferredFocusedView 
    { 
// you can also add some if else here 
     return [self.selectedViewController preferredFocusedView];// or you can do self.selectedViewController.view if that view is focusable 
    } 

    @end 

Мой выбранный контроллер для просмотра здесь FirstViewController, который выглядит так и работает отлично.

#import "FirstViewController.h" 

@interface FirstViewController() 
@property (weak, nonatomic) IBOutlet UIButton *button; 

@end 

@implementation FirstViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

- (UIView*)preferredFocusedView 
{ 
    return _button;// return view which you want to make focus able 
} 
@end 
+0

TabBar скрыт в определенное время, но фокус все еще остается на TabBar. – vipulk617

+0

Когда я вызываю self.preferredFocusedView в классе TabBarController в методе didSelectViewController, то это не изменение фокуса в AVPlayerViewController. – vipulk617

+3

, вы не должны вызывать этот метод непосредственно, он будет вызывать его при запуске, или вы должны вызвать метод setNeedUpdateFocus для запроса этого метода. –

Смежные вопросы