子视图中的 tvOS 焦点按钮
tvOS Focus button in a Subview
我正在使用 AVPlayerController 并且我在 AVPlayerController 之上添加了一个子视图。随着子视图的显示,我想将焦点从播放器转移到子视图,并将焦点放在添加到该 Subivew 顶部的 UIButton 上。我已经尝试过 preferredfocusview,但它是只读的 属性,我无法更改它。任何人都可以帮忙。非常感谢。
首先,preferredFocusView
已弃用,因此您应该改用 preferredFocusEnvironments
。
它是一个计算的 属性,这意味着您不分配给它,而是覆盖它:
override var preferredFocusEnvironments: [UIFocusEnvironment] {
//if subview exists, return the subview or the button, whichever is focusable
return [subview]
//otherwise use the default implementation of AVPlayerController
return super.preferredFocusEnvironments
}
您还应该在添加子视图时调用 self.setNeedsFocusUpdate()
和 self.updateFocusIfNeeded()
来请求焦点更新。
我正在使用 AVPlayerController 并且我在 AVPlayerController 之上添加了一个子视图。随着子视图的显示,我想将焦点从播放器转移到子视图,并将焦点放在添加到该 Subivew 顶部的 UIButton 上。我已经尝试过 preferredfocusview,但它是只读的 属性,我无法更改它。任何人都可以帮忙。非常感谢。
首先,preferredFocusView
已弃用,因此您应该改用 preferredFocusEnvironments
。
它是一个计算的 属性,这意味着您不分配给它,而是覆盖它:
override var preferredFocusEnvironments: [UIFocusEnvironment] {
//if subview exists, return the subview or the button, whichever is focusable
return [subview]
//otherwise use the default implementation of AVPlayerController
return super.preferredFocusEnvironments
}
您还应该在添加子视图时调用 self.setNeedsFocusUpdate()
和 self.updateFocusIfNeeded()
来请求焦点更新。