如何在 tvOS 中将焦点从一个按钮移动到另一个按钮?
How to move the focus from a button to another in tvOS?
我是 tvOS 新手。我想要一个标准按钮,一旦按下,它就会将焦点移动到另一个标准按钮,我该怎么做(当然如果可能的话)?
首先用自定义 属性 覆盖 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()
}
这应该会将焦点系统更新到您的其他按钮。
另一种选择是在按钮 A(例如)获得焦点时执行如下操作:
buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()
不过,这仅在它们在视图层次结构中处于同一级别时才有效。如果不是,那么您可能需要将对 setNeedsFocusUpdate
的调用一直链接到层次结构或其他东西...
我是 tvOS 新手。我想要一个标准按钮,一旦按下,它就会将焦点移动到另一个标准按钮,我该怎么做(当然如果可能的话)?
首先用自定义 属性 覆盖 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()
}
这应该会将焦点系统更新到您的其他按钮。
另一种选择是在按钮 A(例如)获得焦点时执行如下操作:
buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()
不过,这仅在它们在视图层次结构中处于同一级别时才有效。如果不是,那么您可能需要将对 setNeedsFocusUpdate
的调用一直链接到层次结构或其他东西...