簡體   English   中英

如何在tvOS中以編程方式更改焦點

[英]How to change focus programmatically in tvOS

我正在迅速開發一個tvOS應用程序。 我在應用程序中使用UITabBarController 我的要求是10秒后自動隱藏AVPlayerViewController ,焦點可以移到AVPlayerViewController欄項內的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子類,並設置類故事板的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM