具有多选的UICollectionView不会选择十几个项目

当使用UICollectionView并将allowsMultipleSelection设置为YES时,只能选择十几个项目。 UICollectionViewDelegate停止调用collectionView:didSelectItemAtIndexPath: .

这看起来很随意。 您可以选择一些项目,向下滚动,再选择一些项目,在某些时候您无法再选择任何项目。

当单元格较小时,您似乎可以选择更多项目。 单元格越大,在停止工作之前您可以选择的项目越少。

我发现虽然我之前的回答有效,但可能是因为没有调用super。 虽然UICollectionReusableView的文档没有提到这一点,但UITableViewCell的文档具有相同的方法。

 - (void)prepareForReuse { [super prepareForReuse] // Your code here. } 

旧答案:


这可能是UICollectionView的错误。

发生的事情是先前选择的单元格正在被重用并保持选定的状态。 集合视图未设置为“否”。

解决方案是重置prepareForReuse中的选定状态:

 - (void)prepareForReuse { self.selected = NO; } 

如果选择了重用单元格,则在调用prepareForReuse后,集合视图将设置为“YES”。

这是UICollectionView应该自己做的事情。 谢天谢地,解决方案很简单。 不幸的是,通过跟踪我自己的选择状态,我花了很多时间来解决这个bug。 我没有意识到为什么会发生这种情况,直到我开始研究另一个细胞较小的项目。