如何在tvOS中将焦点从按钮移动到另一个按钮?

Cue*_*Cue 5 focus menu apple-tv tvos

我是tvOS的新手.我想要一个按下的标准按钮,它将焦点移动到另一个标准按钮,我该怎么做(如果可能的话)?

Ant*_*ine 10

首先preferredFocusedView使用自定义属性覆盖viewController:

var myPreferredFocusedView:UIView?
override var preferredFocusedView: UIView? {
    return myPreferredFocusedView:UIView
}
Run Code Online (Sandbox Code Playgroud)

然后,在你的按钮回调中,设置myPreferredFocusedView你应该获得焦点的下一个首选按钮.之后,直接请求焦点更新:

func buttonCallback(){
    myPreferredFocusedView = button2 // button2 is an example 

    /*
        Trigger the focus system to re-query the view hierarchy for preferred
        focused views.
    */
    setNeedsFocusUpdate()
    updateFocusIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)

这应该将焦点系统更新为您的其他按钮.


CMa*_*ash 5

另一种选择是当buttonA(例如)获得焦点时执行如下操作:

buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()
Run Code Online (Sandbox Code Playgroud)

不过,只有当它们位于视图层次结构中的同一级别时,这才有效。如果没有,那么您可能需要将调用setNeedsFocusUpdate一直链接到层次结构或其他东西......

在这里阅读更多内容