UICollectionViewCell中的UITableView,点击单元格时会突出显示所有UITableViewCell

Nai*_*ler 6 objective-c uitableview ios

我正在制作UICollectionView一些UICollectionViewCells包含一个的地方UITableView.

这很好用,一切都很好,直到我点击UICollectionViewCell其他地方而不是UITableView.这会导致在表中的setHighlighted所有方法上调用该方法UITableViewCells.

下面是一个粗略的观点UICollectionViewCell.在UITableView从"单元一"到"单元三"只有跨越.点击此表外的任何位置,但内部UICollectionViewCell会导致单元格突出显示.

-------------------------
| Title goes here       |
|                       |
-------------------------
|                       |
|   Cell one            |
-------------------------
|                       |
|   Cell two            |
-------------------------
|                       |
|   Cell three          |
-------------------------
| Button outside table  |
|-----------------------|
Run Code Online (Sandbox Code Playgroud)

调用堆栈看起来像这样.

[MyTableViewCell setHighlighted:]
[UICellHighlightingSupport highlightView:]
UIApplicationMain
main
Run Code Online (Sandbox Code Playgroud)

似乎UICollectionViewCell前锋是所有细胞的一个亮点命令.

我通过setHighlightedUITableViewCell子类中重载方法而不是调用超级实现来解决这个问题.虽然看起来有点hacky,我想知道这种行为是否可以以某种方式避免.

编辑: 我认为这种行为来自UICollectionCellView于所有孩子的呼叫setHighlighted.我理解的在大多数其他情况下都很有用.

mic*_*tox 2

您是否尝试过实施以下UICollectionViewDelegate方法?

collectionView:shouldHighlightItemAtIndexPath:
Run Code Online (Sandbox Code Playgroud)

如果您UITableView在集合视图中为您的视图返回“否”,那么您应该可以开始了。

  • 请注意,在 iOS 7.1 中,从 `collectionView:shouldHighlightItemAtIndexPath:` 返回 NO 实际上会阻止单元格被选择。我提交了雷达。打开雷达镜像:http://www.openradar.me/radar?id=5803034198147072 (3认同)