子视图中的 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() 来请求焦点更新。