Как добавить UIPanGestureRecognizer в подвиды UIScrollView

я добавляю подпанели к UIScrollView и затем я добавляю UIPanGestureRecognizer к этим подвидам. Все работает нормально, но теперь после добавления UIPanGestureRecognizer для подвидов вида прокрутки прокрутка невозможна.

каким может быть возможное решение этой проблемы?

2 ответов


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

Если вы хотите всегда иметь возможность прокручивать, вы можете установить распознаватель жестов, чтобы требовать прокрутки просмотров один сбой, прежде чем он будет работать:

[self.myCustomPanRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer]; 

Edit: как указал Бастиан в комментариях, ссылка на pan guesture находится только в iOS 5, до этого, проверьте массив распознавателей жестов и найдите тип UIPanGestureRecognizer

Если вы хотите, чтобы оба работали, вам может потребоваться сделать что-то, чтобы отделить распознаватель от представлений прокрутки, например, сделать пользователя нажмите и удерживайте, прежде чем ваш пользовательский распознаватель будет распознан.

существует также метод делегата, который позволит и recognisers работать вместе, но я не уверен, насколько хорошо это работает, когда оба того же типа


Если вы хотите использовать оба simultaneus вы можете использовать

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

от делегата, но это, вероятно, не то, что вы хотите ;)