2012-11-25 12 views
7

UICollectionViewに設定して使用する場合は、十数個のアイテムしか選択できません。 UICollectionViewDelegateは、collectionView:didSelectItemAtIndexPath:の呼び出しを停止します。マルチセレクションのUICollectionViewは12個以上のアイテムを選択しません

非常にランダムなようです。いくつかのアイテムを選択したり、下にスクロールしたり、さらにいくつかを選択したり、ある時点でこれ以上アイテムを選択することはできません。

セルが小さくなると、より多くのアイテムを選択できるように見えます。セルが大きいほど、作業を停止する前に選択できる項目が少なくなります。

答えて

16

私の以前の回答は機能していますが、superを呼び出さないことが原因である可能性があることを発見しました。 UICollectionReusableViewのドキュメントではこれに言及していませんが、同じ方法を持つUITableViewCellのドキュメントがあります。

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

旧回答:


これはUICollectionViewのバグかもしれません。

以前に選択されたセルが再利用され、選択された状態を維持している状態です。コレクションビューでは、selectedが「いいえ」に設定されていません。

ソリューションは、セルのprepareForReuse選択状態をリセットすることです:再利用のセルが選択されている場合prepareForReuseが呼び出された後

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

、コレクションビューは「YES」にselectedを設定します。

これは、UICollectionViewがそれ自身で行うべきことです。ありがたいことに、このソリューションは簡単です。残念ながら、私は自分の選択状態を追跡することによってこのバグを回避するために多大な時間を費やしました。私は実現しませんでしたなぜ私は小さいセルで別のプロジェクトに取り組んでいない限り起きていました。

+0

ありがとう、ルーク!私は同意する、これはバグのように感じるので、私はそれを報告した:http://openradar.appspot.com/radar?id=2816402 – clozach

+0

@clozach:私はこれを更新したばかりだ。私はそれがsuperを呼んでいないことによって引き起こされると思う。ドキュメントにはこれは言及されていませんが、 'UITableViewCell'の' prepareForReuse'のドキュメントではこれについて言及しています。これは単なる文書化の問題かもしれません。 – Luke

関連する問題