我有一个带有滚动视图的详细信息视图控制器。我已经在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中开始和结束)内滑动,便能够识别。
答案 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]