在垂直UIScrollView

时间:2015-05-14 06:01:09

标签: ios uiscrollview

我知道这个话题已经详细讨论过了,但我无法搜索,找不到任何合适的解决方案。

我实际上是在滚动视图中尝试复制您在Mail.app的表视图中遇到的行为。我希望用户能够正常滚动浏览内容视图,但也可以将视图中的项目滑动。

我有一个标准UIScrollView,只能垂直滚动。然后我有几个视图附加UIPanGestureRecognizer个。我的视图控制器是这些手势识别器的委托,以确保滚动视图的正常滚动。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && gestureRecognizer != self.scrollView.panGestureRecognizer) return YES;
    return NO;
}

问题是这些手势识别器始终能够识别用户何时开始滚动滚动视图。我理解为什么会这样,我已经尝试了几种方法来尝试解决它。​​

我最大的挫败感是UIScrollView的手势识别器永远不会失败。如果确实如此,我可以让我的其他手势识别器在识别之前要求它失败。

我已经解决的最后一个选项(哪种作品)基本上最好描述为:

  1. 平移识别器开始
  2. 我记录了触摸点
  3. 每次识别器发生变化时,我都会检查以确保这些点沿着(接近)完美的水平线。
  4. 如果有超过5个连续点进行验证,我会继续将识别器视为正常,并在滚动视图中禁用滚动。
  5. 这是最佳/唯一的方法吗?

0 个答案:

没有答案