UIScrollview,向下移动响应链

时间:2012-02-16 12:43:18

标签: ios uiscrollview uiimage first-responder

我会尽量保持简单。

我有一张UIScrollview,附有大约10张图片。我目前拥有它,以便我可以触摸图像并在滚动视图上拖动它。

我通过创建子类UIImageview并实现touchesMoved等来完成此操作。我仍然可以正常滚动视图,但是当尝试拖动图像太快时会出现问题。程序似乎首先检查视图是否正在滚动,然后在UIImage类中触发touchesMoved。

无论如何我可以切换它,以便第一次检查是否触摸了图像,然后如果没有将响应传递到滚动视图。

任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用一根手指移动图像,用两根手指滚动视图。

如果您使用的是iOS 5,这非常简单:

self.scrollView.panGestureRecognizer.minimumNumberOfTouches = 2;

如果您想支持旧版iOS,则需要做更多工作:

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers){
  if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){
    ((UIPanGestureRecognizer *)gesture).minimumNumberOfTouches = 2;
  }
}

如果您想对两者使用单指手势,有几种方法可以做到这一点。您可以为每个图片视图附加UIPanGestureRecognizer。您可能需要使用UIPanGestureRecognizer消息告诉滚动视图自己的requireGestureRecognizerToFail:是否遵从图像视图识别器。

另一种方法是将滚动视图的UIPanGestureRecognizer委托设置为您创建的实现gestureRecognizer:shouldReceiveTouch:方法的对象。在该方法中,您可以检查触摸视图是否是您的图像视图之一。如果是这样,请返回NO以防止滚动视图的平移手势识别器被激活。

答案 1 :(得分:0)

你的问题对我来说有点混乱,但我会假设你有一个UIScrollView里面有10个UIImageViews你想要拖拽它。

我的建议是使用附加到每个UIIImageView的手势识别器(UIPanGestureRecognizer)来实现拖动行为。我发现手势识别器对这种行为更加坚实。

如果您不知道如何使用手势识别器,我可以发布一个简短的代码示例来演示如何拖动任何类型的UIView。只需在评论中提问,我就会写下来。