如何在TVOS的UITableViewCell中关注UICollectionViewCell?

时间:2016-09-13 16:47:17

标签: swift uitableview uicollectionview uicollectionviewcell tvos

描述:

我有一个UITableViewCell的列表,每个UICollectionView的{​​{1}}的X值为UICollectionViewCell s(为了更清晰,请参见下图)

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

除非我尝试关注UICollectionViewCell s(又名: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吗?如何关注位于UICollectionViewCell的{​​{1}}中的UICollectionView

更多:

Table View Controller

图片显示我的UITableViewController及其所有内容来自我的StoryBoard。

1 个答案:

答案 0 :(得分:6)

问题很可能是您的表格视图单元格正在返回truecanBecomeFocused。您可以通过实施UITableViewDelegate方法tableView(_, canFocusRowAt:)返回false,或通过继承UITableViewCell并从false返回canBecomeFocused来禁用此功能。< / p>

焦点引擎会尝试关注从true返回canBecomeFocused的最顶层视图,这就是为什么它无法找到您的集合视图单元格:它们被“隐藏”在内部可聚焦的表格视图单元格。如果禁用焦点在表格视图单元格上,则焦点引擎将能够找到您的集合视图单元格。

override func tableView(tableView: UITableView, canFocusRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return false
}