如何在tvOS中将UICollectionViewCell聚焦在UITableViewCell中?

4

描述:

我有一个UITableViewCell列表,每个单元格上面都有一个带有X个UICollectionViewCellUICollectionView(请参见下面的图像以了解更多信息)

这背后的想法是能够实现带有标题和水平滚动的UICollectionView的部分内容

一切工作得很好,除了当我尝试聚焦UICollectionViewCell(又名:CategoryCell)时。 UITableViewCell获得焦点并突出显示所有内容,使得聚焦任何UICollectionViewCell变得不可能。

我尝试过的:

根据其他帖子,解决此问题的方法是在UITableViewCell上停用用户交互和/或将选择样式设置为无:

cell.selectionStyle = UITableViewCellSelectionStyle.None

并且在UICollectionViewCell上启用用户交互。以下是讨论此问题的帖子:UITableViewCell with UITextField losing the ability to select UITableView row?How can I disable the UITableView selection highlighting?。我尝试实施这些解决方案,但没有成功。

问题:

我错过了什么步骤?修复方法不适用于tvOS吗?如何聚焦我的UITableViewCell中的UICollectionView中的UICollectionViewCell

更多信息:

Table View Controller

显示我的故事板中UITableViewController及其所有内容的图像。

1个回答

9
问题很可能是您的表视图单元格在canBecomeFocused方法中返回了true。您可以通过实现UITableViewDelegate方法tableView(_, canFocusRowAt:)并返回false,或者通过继承UITableViewCell类并从canBecomeFocused方法中返回false来禁用它。
焦点引擎会尝试将焦点放在最上面的视图上,该视图从canBecomeFocused方法中返回true,这就是为什么它无法找到您的集合视图单元格的原因:它们“隐藏”在可聚焦的表视图单元格内部。如果您禁用表视图单元格的焦点,则焦点引擎将能够找到您的集合视图单元格。
override func tableView(tableView: UITableView, canFocusRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return false
}

1
我已经尝试过这个,但它没有起作用。当我使用Siri遥控器在集合单元格之间导航时,我的集合单元格无法聚焦。我可以在表视图中上下滚动,但仅限于此。任何帮助都将不胜感激。 - C0D3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接