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

时间:2015-10-12 12:58:06

标签: menu focus tvos apple-tv

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

2 个答案:

答案 0 :(得分:10)

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

var myPreferredFocusedView:UIView?
override var preferredFocusedView: UIView? {
    return myPreferredFocusedView:UIView
}

然后,在按钮回调中,将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()
}

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

答案 1 :(得分:1)

另一种选择是在buttonA(例如)具有焦点时执行以下操作:

buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()

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

Read more here