У меня просто есть UICollectionView внутри моего UIViewController.
Я использую SWRevealViewController для открытия левого / правого бокового меню.Я могу установить его panGestureRecognizer для обеспечения полноэкранного панорамирования.
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
Следующий метод предоставит panGestureRecognizer, подходящий для добавления в любое представление, чтобы выполнять обычные жесты перетаскивания и смахивания, чтобы показать заднюю часть.Просмотры.Обычно это добавляется к верхней панели фронт-контроллера, но может быть добавлено к вашему представлению frontViewController или к представлению отображения контроллера, чтобы обеспечить полноэкранное панорамирование.По умолчанию panGestureRecognizer добавляется в представление, содержащее представление переднего контроллера.Чтобы сохранить это поведение по умолчанию, вам все равно нужно вызвать этот метод, просто не добавляйте его ни в одно из ваших представлений.Настройка по умолчанию позволяет отключить взаимодействие пользователя с представлениями вашего контроллера, не затрагивая распознаватель.
Моя проблема заключается в том, что в определенной ячейке моего UICollectionView у меня нет промежутков по краям.cellWidth = collectionView.bounds.size.width
И эта ячейка содержит UICollectionView с горизонтальной прокруткой.
Вместо того, чтобы открывать мое левое / правое меню, он просто прокручивает по горизонтали мой UICollectionView.
Я хотел бы обработать этот сценарий:
1: , если panGesture находится внутри UICollectionViewCell, содержащего UICollectionView с горизонтальной прокруткой.
2: определяет местоположение жеста на горизонтальной оси, и, если оно находится на краю экрана, не запускайте горизонтальную прокрутку UICollectionView, а запускайте panGesture, чтобы открыть меню.
После прочтения большого количества статей и официальной документации я нашел этот UIScreenEdgePanGestureRecognizer .
Но также, что эту логику следует выполнять путем переопределения метода shouldReceiveTouch , я прав?
Любой намек на то, как мне это реализовать?
РЕДАКТИРОВАТЬ:
После гВ ответ на вопрос, предложенный в комментарии, я попытался, но он не работает.
let edgePanGesture = UIScreenEdgePanGestureRecognizer()
collectionView.panGestureRecognizer.require(toFail: edgePanGesture)
Я установил это в своей ячейке, содержащей горизонтальный collectionView, но он не работает.
Iможет быть, что-то упускает, любая помощь?