Проблема, связанная с UIScrollView как подвидом представления с поддержкой UIPanGesture

Вот сценарий:

У меня есть scrollView как подпредставление представления, к которому добавлен UIPanGestureRecognizer. Жест панорамирования применяется только в одном направлении, скажем, слева направо.

Я пытаюсь добиться следующего: если scrollView.contentOffset.x == 0 и пользователь выполняет панорамирование слева направо, я хочу, чтобы PanGesture работал, в противном случае я хочу, чтобы scrollView работал как обычно.

Я старался

  • Внедрение hitTest:withEvent: на суперпредставлении scrollView, где я могу проверить contentOffset, но нет никаких данных о направлении жеста.
  • Внедрение touchesShouldBegin:withEvent:inContentView: в scrollView, но опять же, нет данных о направлении.

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

Есть ли обходной путь для этого? Заранее спасибо!

1 ответ

Установите делегата для UIPanGestureRecognizer, который вы добавили в суперпредставление, и внедрите его

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { 
    if(scrollView.contentOffset.x != 0){
        return NO;
    }

    return YES;
}
Другие вопросы по тегам