我UICollectionView
在单元格内部有标签,可以定期自动更改.当此更新触发时,我调用reloadData
UICollectionView并设置单元格以更改背景颜色[UICollectionViewCell setHighlighted:].
问题是如果用户按住某个单元格然后进行更新,则当用户释放该单元格时会保持突出显示并且也不能再进行选择.
我注意到dequeueReusableCellWithReuseIdentifier:forIndexPath:
reloadData之后在单元格上调用setHighlighted.
我也试过reloadSections:
而不是reloadData,这解决了细胞被"卡住"的问题,但是当它被调用时会导致细胞淡出并进入细胞.
将呼叫置于内部performBatchUpdates:
似乎也无法解决问题.
在单元格的类中尝试调用:
- (void)prepareForReuse { [super prepareForReuse]; [self setHighlighted:NO]; ... Any other custom stuff that should be cleaned up ... }
问题是,您可能正在进行不同的背景着色,然后突出显示单元格通常会自行进行.通常,单元格的超类会撤消这些更改prepareForReuse
,但它不知道您的更改.