如何在tvOS中以编程方式更改焦点

时间:2016-02-04 09:58:27

标签: swift focus tvos tvos9.1

我正在swift开发一个tvOS应用程序。我在应用中使用IO。 我的要求是在10秒后自动隐藏标签栏,焦点可以移动到标签栏项目内的UITabBarController。 我试图覆盖AVPlayerViewController,但焦点无法转移到preferredFocusedView

AVPlayerViewController

请建议我如何以编程方式移动焦点。

1 个答案:

答案 0 :(得分:2)

问题focus当时不在viewController,而焦点在tabBarController,所以我建议你这样做, 创建一个TabBarController子类并将故事板中tabController的类设置为该类,然后在tabBarController子类中执行类似这样的操作。

  #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