当使用UICollectionView
设置allowsMultipleSelection
为 YES 时,只有十几个项目是可选的。UICollectionViewDelegate
停止呼叫collectionView:didSelectItemAtIndexPath:
。
看起来很随意。您可以选择一些项目,向下滚动,选择更多,在某些时候您无法选择更多项目。
当单元格较小时,您似乎可以选择更多项目。单元格越大,在它停止工作之前您可以选择的项目就越少。
当使用UICollectionView
设置allowsMultipleSelection
为 YES 时,只有十几个项目是可选的。UICollectionViewDelegate
停止呼叫collectionView:didSelectItemAtIndexPath:
。
看起来很随意。您可以选择一些项目,向下滚动,选择更多,在某些时候您无法选择更多项目。
当单元格较小时,您似乎可以选择更多项目。单元格越大,在它停止工作之前您可以选择的项目就越少。
我发现虽然我之前的答案有效,但可能是由于没有调用 super. 虽然 的文档UICollectionReusableView
没有提到这一点,UITableViewCell
但具有相同方法的 的文档却提到了这一点。
- (void)prepareForReuse
{
[super prepareForReuse]
// Your code here.
}
老答案:
这可能是UICollectionView
.
发生的情况是先前选择的单元格正在被重用并保持选定状态。集合视图未设置selected
为“否”。
解决方案是重置prepareForReuse
单元格的选定状态:
- (void)prepareForReuse
{
self.selected = NO;
}
如果选择了重用单元格,则集合视图在调用后将设置selected
为“YES” prepareForReuse
。
这是UICollectionView
应该自己做的事情。幸运的是,解决方案很简单。不幸的是,我花了很多时间通过跟踪我自己的选择状态来解决这个错误。直到我在另一个具有较小单元的项目上工作时,我才意识到为什么会发生这种情况。