ScrollView正在使用“滑动手势识别器”

时间:2019-01-28 07:59:46

标签: objective-c uiscrollview uiswipegesturerecognizer

我有一个带有滚动视图的详细信息视图控制器。我已经在UIScrollView上加载了UILabel,UIImageView。 scrollview设置为仅垂直滚动。并且该视图需要能够识别向左和向右滑动,以通过添加来导航到下一页/上一页

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 :(得分:0)

确保如果UIImage允许缩放,则滑动识别器将无法工作,因为它正在尝试缩放。在这种情况下,仅在某些情况下需要启用缩放。希望对您有帮助。

答案 1 :(得分:0)

在禁用滚动的情况下初始化滚动视图。然后,您需要在不放大图像时禁用滚动视图中的滚动,并在放大图像时重新启用它。这提供了预期的行为。

- (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]