6

を含むUICollectionViewものを作成しています。UICollectionViewCellsUITableView

これはうまく機能し、UICollectionViewCell以外の場所をタップするまではすべて問題ありませんUITableView。これにより、テーブル内のsetHighlightedすべてでメソッドが呼び出されUITableViewCellsます。

以下は のラフスケッチですUICollectionViewCell。唯一のUITableView範囲は「セル 1」から「セル 3」までです。この表の外側で内側をタップするUICollectionViewCellと、セルが強調表示されます。

-------------------------
| Title goes here       |
|                       |
-------------------------
|                       |
|   Cell one            |
-------------------------
|                       |
|   Cell two            |
-------------------------
|                       |
|   Cell three          |
-------------------------
| Button outside table  |
|-----------------------|

コール スタックは次のようになります。

[MyTableViewCell setHighlighted:]
[UICellHighlightingSupport highlightView:]
UIApplicationMain
main

UICollectionViewCellハイライトコマンドをすべてのセルに転送するようです。

setHighlightedサブクラスでメソッドをオーバーロードしUITableViewCell、スーパー実装を呼び出さないことで、この問題を回避しました。これは少しハッキーに思えますが、どうにかしてこの動作を回避できるのではないかと思います。

編集: この動作は、UICollectionCellViewすべての子で setHighlighted を呼び出すときに発生すると想定しています。私が理解していることは、他のほとんどの場合に役立ちます。

4

2 に答える 2

2

次のメソッドを実装しようとしましたUICollectionViewDelegateか?

collectionView:shouldHighlightItemAtIndexPath:

UITableViewコレクション ビューのビューに対して NO を返す場合は、問題ありません。

于 2013-10-18T08:08:22.543 に答える