Триггер UIPanGestureRecognizer перед дочерним UIScrollView - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующая иерархия представлений:

View hierarchy

Родительское представление, содержащее UIPanGestureRecognizer

и два родственных представления: UIScrollView и UIView.Последний UIView может быть создан долгим нажатием на UIScrollView.

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

Поэтому, чтобы достичь этого, я бы хотел перенаправить все события панорамирования от UIScrollView до UIPanGestureRecognizer.

Я пытаюсь имитировать поведение стандартного Календаря iOS при создании события.

До сих пор я пытался реализовать UIPanGestureRecognizerDelegate следующими методами:

      public override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
      }

      public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
      }

      public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        return true
      }

Реализацияодин из этих методов или все из них и возврат true не помогли.

С другой стороны, когда я просто пытаюсь панорамировать самый верхний вид, события распознаются (даже без настройки делегата).).

В качестве другого решения я также попытался отключить взаимодействие с пользователем в UIScrollView:

scrollView.isUserInteractionEnabled=false

Однако распознаваемый жест все еще не 't активируются.

Как я могу полностью отключить UIScrollView s распознаватель жестов в какой-то момент во время выполнения приложения, направляющий все жесты панорамирования в родительское представление?

...