У меня есть следующая иерархия представлений:
Родительское представление, содержащее 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 распознаватель жестов в какой-то момент во время выполнения приложения, направляющий все жесты панорамирования в родительское представление?