Я хочу реагировать на двойные нажатия на ячейки в UICollectionView и иметь действие двойного нажатия, отменяющее выбор ячейки.
Это то, что я пробовал:
UITapGestureRecognizer *tapRecogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
tapRecogniser.numberOfTapsRequired = 2;
for (UITapGestureRecognizer *recogniser in [self.collectionView gestureRecognizers]) {
[recogniser requireGestureRecognizerToFail:tapRecogniser];
}
[self.collectionView addGestureRecognizer:tapRecogniser];
То есть я пытаюсь заставить распознаватели жестов по умолчанию терпеть неудачу, если мой распознаватель жестов двойного касания сработает.
Похоже, это не работает, так как collectionView:didSelectItemAtIndexPath:
моего делегата представления коллекции все еще вызывается после двойного нажатия
Примечание к документам UICollectionViewController от Apple
Apple документация вводит в заблуждение по этому поводу, утверждая, что распознаватель жестов по умолчанию является экземпляром подкласса UITapGestureRecognizer, поэтому его можно легко выбрать с помощью [recogniser isKindOfClass:[UITapGestureRecognizer class]]
. К сожалению, это ошибка.