didSelectItemAtIndexPath не вызывается с несколькими видами коллекции на одном экране

У меня есть два представления коллекции на одном экране, и у меня есть источник данных и делегат, реализованный для обоих в том же контроллере представления. Однако методы делегата, такие как didSelectItemAtIndexPath, вызываются только для одного.

Дополнительная информация:

  • Оба представления коллекции имеют ячейку с изображением.
  • AllowSelection и UserInteractionEnabled установлены в true в обоих представлениях коллекции
  • Пользовательское взаимодействие включено на изображениях
  • Делегат и источник данных устанавливаются на раскадровке из обоих представлений коллекции в контроллер вида
  • Изображения отображаются правильно

Оба представления коллекции имеют одинаковую настройку, но работает только один делегат. У вас есть какие-то подсказки, что можно было бы установить?

Представления коллекции находятся внутри представления, имеющего вид прокрутки. Может ли это быть каким-то образом связано?

EDIT 2:

Проект с той же проблемой: https://github.com/iagomr/ProblemWithAutoLayout

ИЗМЕНИТЬ 1:

Каким-то образом это связано с ограничениями автоопределения, потому что, если я привяжу нижний вид коллекции к нижней части экрана, а не к нижней части другого вида коллекции, он начнет работать.

Это все из-за того, что мне нужно построить высокий экран и добавить все в представление внутри прокрутки в 1000 точек.

Код:

//MARK: - CollectionView Delegate func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { println("Called") } //MARK: - CollectionView DataSource func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { if collectionView == thisCV { return 1 } else if collectionView == thisOtherCV{ return 1 } } func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { if collectionView == "thisCV" { if let thisCell = collectionView.dequeueReusableCellWithReuseIdentifier("thisCell", forIndexPath: indexPath) as? thisCollectionViewCell { thisCell.image = image return thisCell } } else if collectionView == "thisOtherCV"{ if let thisOtherCell = collectionView.dequeueReusableCellWithReuseIdentifier("thisOtherCell", forIndexPath: indexPath) as? OtherCollectionViewCell { thisOtherCell.image = image return thisOtherCell } } return UICollectionViewCell() } 

Я могу подтвердить, что didSelectItem не вызван. Если константа для ограничения сверху вниз между двумя представлениями коллекции изменяется с 501 на 0, она работает.

Эта проблема, скорее всего, связана с тем, что у вас есть два вида прокрутки (виды коллекций) внутри другого вида прокрутки. В целом, я бы сказал, что вы должны изменить свой интерфейс. Я бы предложил два способа его исправления

Использование единого вида коллекции

Используйте только один просмотр коллекции с различными разделами для различного контента. Кроме того, НЕ вставляйте его в представление прокрутки. В представлении коллекции уже есть прокрутка, чтобы вы могли легко прокручивать. Вы также можете удалить различные классы ячеек для разных разделов, чтобы вы могли делать все, что вы хотите сделать сейчас.

Если вы хотите отправную точку, вот хороший учебник, который должен помочь вам в этом.

Использование прокрутки

Если вы хотите настроить свой интерфейс в Interface Builder, удалите оба вида коллекции и просто добавьте весь свой пользовательский интерфейс внутри прокрутки. Поместите UIButton в места, где вы хотите щелкнуть, чтобы создать действие.

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

  • Невозможно удалить ячейку UICollectionView после ее перезагрузки
  • Как приложение IOS Photos может показывать сотни фотографий на одном экране?
  • Как создать макет, например, Featured page в App Store?
  • UICollectionView добавление изображения в ячейку
  • UICollectionView вертикально центрирован
  • Какую функцию UICollectionView следует использовать для обновления UILabels внутри ячейки?
  • Последнее выравнивание UICollectionViewCell
  • UICollectionView cellForItemAtIndexPath - nil
  • Фон изменения ячейки UICollectionView во время нажатия
  • UICollectionView не может прокручивать, чтобы увидеть всю последнюю строку
  • Установка радиуса угла на ячейке приводит к урону производительности UICollectionView
  • Interesting Posts

    Поиск атрибута NSAttributedString ниже позиции крана представления

    Может ли AVAudioRecorder получать частоту звука от микрофона

    Swift: Как добавить словарные массивы в массив?

    Реализация метода, использующего блок для использования в качестве обратного вызова

    UISearchController отклоняет VC при нажатии кнопки отмены

    Как добавить закрытый ключ в сертификат распространения?

    Когда приложение находится в фоновом режиме, doReceiveRemoteNotification не вызывается с Firebase

    Открытие файла Realm в браузере всегда требует ключа шифрования

    iOS | Как получить ширину / высоту изображения во время выполнения

    iOS – XMPPFramework – создание группового чата – Проблема

    Как улучшить производительность UCollectionView, содержащего множество небольших изображений?

    CCSpriteBatchNode: Получает ли ребенок ребенка прирост производительности чертежа?

    Как добавить участников к событию календаря в iOS?

    NSCocoaErrorDomain Code = -1 при удалении фотографий в библиотеке фотографий пользователя

    Push-уведомление, когда приложение не запущено – launchOptions словарь пуст

    Давайте будем гением компьютера.