【发布时间】:2015-10-12 12:58:05
【问题描述】:
我是 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()
}
这应该将焦点系统更新到您的另一个按钮。
【讨论】:
preferredFocusedView 并在 viewWillAppear 请求焦点更新
另一种选择是在 buttonA(例如)获得焦点时执行以下操作:
buttonB.setNeedsFocusUpdate()
viewController.setNeedsFocusUpdate()
这仅在它们在视图层次结构中处于同一级别时才有效。如果没有,那么您可能需要将调用链接到 setNeedsFocusUpdate 一直到层次结构或其他东西......
【讨论】: