ScrollView ест Распознаватель жестов смахивания - PullRequest
0 голосов
/ 28 января 2019

У меня есть контроллер представления подробностей с прокруткой на нем.И у меня есть загрузка UILabel, UIImageView поверх UIScrollView.Вид прокрутки настроен на прокрутку только по вертикали.и представление должно быть в состоянии распознать пролистывание влево и вправо, чтобы перейти к следующей / предыдущей странице, добавив

self.leftGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self  action:@selector(swipeRecognizer:)];
[self.leftGestureRecognizer setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:self.leftGestureRecognizer];

Так что, когда я пролистываю в UILabel, это работает.Если я проведу пальцем из UIScrollView, он не работает.Я предполагаю, что это конфликт UIScrollView жестом смахивания.

Короче говоря, жест смахивания работает только для подпредставления, но не для UIScrollView. У кого-нибудь есть какие-либо идеи по этому поводу?

ОБНОВЛЕНИЕ: Если я проведу пальцем сначала от scrollview, а затем до UILabel, онне распознает жест смахиванияЕсли я проведу по UILabel (начало и конец в UILAbel), он сможет распознать.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Инициализируйте представление прокрутки с отключенной прокруткой.Затем необходимо отключить прокрутку в представлении прокрутки, когда изображение не увеличено, и включить его при увеличении. Это обеспечивает ожидаемое поведение.

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
  if (scrollView.zoomScale != 1.0) {
    scrollView.scrollEnabled = YES;
  } else {
    scrollView.scrollEnabled = NO;
  }
}

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

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
  return myImage;
}

Также добавьте жест к экземпляру прокрутки следующим образом -

leftGestureRecognizer.delaysTouchesBegan = YES;
[myScrollView addGestureRecognizer:leftGestureRecognizer];

ИЛИ Вы можете попробовать следующее -

[scrollView.panGestureRecognizer requireGestureRecognizerToFail: leftGestureRecognizer]
0 голосов
/ 28 января 2019

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

...