2014-02-11 2 views
1

У меня есть UICollectionView в моем приложении, и я хочу обработать фоном, чтобы сделать что-то классное, но я попробовал несколько решений, и ни один из них не был слишком хорош.Как справиться с фоновым краном в UICollectionView

Что я пробовал:

  • Добавление фона вид за UICollectionViewCells и регулировать кран на этом
  • Добавление UITapGestureRecognizer к мнению UICollectionView «s (который так же, как это collectionView недвижимость)

проблема в обоих случаях является то, что в то время как он обрабатывает кран на фоне отлично, он также управляет кран, когда он находится на UICollectionViewCell, поэтому, когда пользователь выбирает элемент, но в этом случае он не должен, потому что у этих двух вещей разные действия в моем приложении.

+0

Если клетка вашего CollectionView имеет подвид из UIImageView, то вам нужно поставить 'imageViewName.userInteractionEnabled = YES;' потому, что по умолчанию это НЕТ. – iPatel

+0

@iPatel Нет, это не так, и, кстати, моя проблема действительно противоположна этому, что обе вещи касаются крана. – Rickye

+0

в вашем случае, выбор (одним нажатием) ячейки и выбор (одним нажатием) фона различны ???? – iPatel

ответ

7

Вот как я попытался установить распознаватель жестов в фоновом режиме. Мне удалось получить отдельные события.

self.collectionView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg"]]; 
self.collectionView.backgroundView.userInteractionEnabled = YES; 

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)]; 
self.collectionView.backgroundView.gestureRecognizers = @[tapRecognizer]; 
+0

Это работает для меня тоже, спасибо. Проблема для меня была «cancelsTouchesInView» – Rickye

+3

Небольшое примечание: это также работает с простым представлением в виде фонового представления, такого как 'self.collectionView.backgroundView = [[UIView alloc] initWithFrame: myFrame];' – CharlesA

Смежные вопросы