[iOS] didDeselectItemAtIndexPathが取得できない

問題

下記のように書いたのに、なぜかdidDeseleceItemAtIndexPathにひっかからずに困った。

// UIColecctionViewController.m

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"selected");
}

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"DEselected");
}

解決策

Cellの方のカスタムクラスでsetSelectedをオーバーライドしていたのだが、
ここで[super setSelected:selected];を呼んでいなかった。

// UICollectionViewCustomCell.m

-(void) setSelected:(BOOL)selected {
    [super setSelected:selected];
    // なんやかんや
}

まじかーUICollectionViewのほうばっか確認してた。
Cellさんかー。

また一つ経験値が上がりました…。