У меня есть текущая структура: (-> обозначает подпредставление)
UIScrollView
- pageOne: UIView
- pageTwo: UIView -> коллекция: UICollectionView
(pageOne и pageTwo являются подпредставлениями UIScrollView. PageTwo содержит CollectionView)
Я пытаюсь отменить прокрутку родительского UIScrollView, если в коллекции обнаружены прокрутки (перетаскивания). Я сделал это, создав UIPanGestureRecognizer для pageTwo. При обнаружении перетаскивания я установил:
UIScrollView.isScrollingEnabled = false
collection.isScrollingEnabled = true
Когда UIPanGestureRecognizer.State.ended (перетаскивание на страницу два остановки), я установил обратно
UIScrollView.isScrollingEnabled = true
collection.isScrollingEnabled = false
Я проверил, что функция правильно определяет перетаскивание / завершение перетаскивания, но по какой-то причине, хотя перетаскивание в пределах pageTwo правильно обнаружено, UIScrollView продолжает прокручивать. Более конкретно, после перетаскивания в pageTwo и успешного изменения прокрутки UIScrollView в false и прокрутки коллекции в true, первоначальное нажатие заставляет UIScrollView прокручивать (страница технически, поскольку isPagingEnabled имеет значение true для ScrollView), обратно в начало pageOne.
- collection & UIScrollView делегат, равный классу viewController.
- DelayTouchDown верно для UIScrollView.
- collection & scrollView, оба прокручивают по вертикали
Какие-либо предложения?
(Извините, если мое форматирование этого вопроса неверное, при первой публикации)