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

标签 swift focus tvos tvos9.1

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

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

}

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

最佳答案

问题是当时 focus 不在 viewController 中,而是焦点在 tabBarController 中,所以我建议你做类似的事情这个, 创建一个 TabBarController 子类并将 Storyboard中的 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

我在这里选择的 View Controller 是 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

关于swift - 如何在 tvOS 中以编程方式更改焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35197806/

相关文章:

javascript - 如何模糊 iframe?

app-store-connect - 目前是否可以在 iTunes Connect 上创建 tvOS in app 购买记录?

ios - 更改页面控件的背景颜色

swift - 是否可以对自定义 tvOS 屏幕保护程序进行编程?

json - 如何创建两个通用 T :Codable structs in Swift? 的差异

ios - 如何将视频文件移动到照片中的特定相册?

swift - 无法从 Firebase 读取。返回空

swift - didSelectRowAt indexPath 在点击时不触发(但在向任一方向滑动单元格时触发)

显示 StackView 页面时 Qt QML 聚焦项目(TextField)

android - GridView 子项不显示焦点