如何将焦点移动到tvos应用程序中集合视图单元格中的按钮?

时间:2016-11-25 04:36:31

标签: ios tvos apple-tv tvos9.1 tvos10

我正在研究Apple TV应用程序。在我的应用程序中,我创建了一个具有集合视图的屏幕。在这种情况下,我能够将焦点移动到集合视图单元格,但无法将焦点移动到集合视图单元格中的按钮,那么任何人都可以帮我解决这个问题吗?

如果有人知道这个答案,请给我一个答案。

2 个答案:

答案 0 :(得分:3)

我可以通过在collectionViewCell子类中添加以下方法来解决这个问题。

在CollectionViewCell子类

override var preferredFocusEnvironments: [UIFocusEnvironment]{
    // Condition
}
override func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool {
    // Condition
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
    // Condition
}

您可以在此链接中查看更多内容: enter link description here

答案 1 :(得分:1)

我认为此页面将指导您实现您想要的目标。 https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/WorkingwiththeAppleTVRemote.html#//apple_ref/doc/uid/TP40015241-CH5-SW4

它很好地解释了焦点引擎如何决定哪个对象应该获得下一个焦点。以下是above link.

一步一步的精彩解释

以下是一个显示如何确定焦点的示例:

  1. 焦点引擎向根窗口询问其首选的FocusView, 返回其根视图控制器的preferredFocusedView 宾语。
  2. 根视图控制器,一个选项卡视图控制器,返回它 选择视图控制器的preferredFocusedView对象。
  3. 选择视图控制器会覆盖其preferredFocusedView方法以返回特定的UIButton实例。
  4. UIButton实例返回self(默认值),并且是可聚焦的,因此焦点引擎将其选为下一个聚焦视图。
  5. 您必须覆盖UIView或UIViewController的preferredFoucsedView属性。

    UnsafeRawPointer

    感谢Slayter's回答