Проблема, связанная с 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;
}