我正在开发 Apple TV 应用程序。在我的应用程序中,我制作了一个具有集合视图的屏幕。在这种情况下,我可以将焦点移动到集合视图单元格,但无法将焦点移动到集合视图单元格中的按钮,所以有人可以帮我解决这个问题吗?
如果有人知道这个答案,请给我一个答案。
我可以通过在 collectionViewCell 子类中添加以下方法来解决这个问题。
override var preferredFocusEnvironments: [UIFocusEnvironment]{
// Condition
}
override func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool {
// Condition
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
// Condition
}
您可以在此链接中查看更多信息: 在此处输入链接描述。
它很好地解释了焦点引擎将如何决定哪个对象应该获得下一个焦点。以下是上述链接的逐步解释。
这是一个显示如何确定焦点的示例:
您必须覆盖 UIView 或 UIViewController 的 preferredFoucsedView 属性。
override weak var preferredFocusedView: UIView? {
if someCondition {
return theViewYouWant
} else {
return defaultView
}
}
感谢Slayter 的回答