焦点引擎不适用于集合视图单元

Posted

技术标签:

【中文标题】焦点引擎不适用于集合视图单元【英文标题】:Focus engine not working on collection view cell 【发布时间】:2015-10-19 14:33:32 【问题描述】:

刚开始玩 tvOS,但我无法让焦点引擎在我的收藏视图上工作。焦点几乎适用于所有其他 UI 元素,例如按钮和表格视图,但不适用于集合视图。

我已尝试覆盖委托 canFocusItemAtIndexPath 并将单元格设置为 cell.camBecomeFocused(),但都不起作用。

谢谢大家

【问题讨论】:

【参考方案1】:

你应该看看 preferredFocusedView 方法。

https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UIFocusEnvironment_Protocol/index.html#//apple_ref/occ/intfp/UIFocusEnvironment/preferredFocusedView

您可以将其添加到您的集合视图单元格中,以指定当单元格获得焦点时哪个子视图应该获得焦点。例如:

- (UIView *)preferredFocusedView

    // In this case, there would be a UITextField hooked up as _myTextField_
    return self.myTextField;

现在,当 Collection View Cell 获得焦点时,在本例中,文本字段将获得焦点。

【讨论】:

【参考方案2】:

我有同样的问题,我在重新加载时无法聚焦 UICollectionView。该解决方案解决了我的问题。 正如 Apple 工程师所说,默认情况下 UICollectionViewCells 没有任何焦点,但您的 imageView 可以设置 adjustsImageWhenAncestorFocused 为 YES 使焦点出现在 collectionViewCell 中。

这里是代码。

cell.imageView.adjustsImageWhenAncestorFocused  = true

也可以参考这个链接。https://forums.developer.apple.com/message/56262#56262

【讨论】:

以上是关于焦点引擎不适用于集合视图单元的主要内容,如果未能解决你的问题,请参考以下文章

SWIFT:在 TVOS 中退出收集时强制焦点引擎转到按钮

更改集合视图的 isHidden 属性不适用于搜索栏取消按钮

Swift:按屏幕分页不适用于两列布局集合视图

如何在 tvos 应用程序的 collectionview 单元格中的按钮上移动焦点?

UICollectionView 窃取焦点

在单个集合视图单元格内控制表视图