Ios UIScrollview,向下移动响应器链

Ios UIScrollview,向下移动响应器链,ios,uiscrollview,uiimage,first-responder,Ios,Uiscrollview,Uiimage,First Responder,我会尽量保持简单 我有一个UIScrollview,附带了大约10张图片。我现在有它,所以我可以触摸一个图像并在滚动视图上拖动它 我通过创建UIImageview子类并实现touchesMoved等实现了这一点。我仍然可以很好地滚动视图,但当试图将图像拖得太快时,问题就出现了。程序似乎首先检查视图是否正在滚动,然后在UIImage类中触发TouchsMoved 无论如何,我可以切换一下,这样第一个检查是是否触摸了图像,如果没有,则将响应传递到scrollview 任何帮助都会很好。谢谢。您的问题

我会尽量保持简单

我有一个UIScrollview,附带了大约10张图片。我现在有它,所以我可以触摸一个图像并在滚动视图上拖动它

我通过创建UIImageview子类并实现touchesMoved等实现了这一点。我仍然可以很好地滚动视图,但当试图将图像拖得太快时,问题就出现了。程序似乎首先检查视图是否正在滚动,然后在UIImage类中触发TouchsMoved

无论如何,我可以切换一下,这样第一个检查是是否触摸了图像,如果没有,则将响应传递到scrollview


任何帮助都会很好。谢谢。

您的问题让我有点困惑,但我假设您有一个包含10个UIImageView的UIScrollView,您想在其中拖动它

我的建议是使用附加到每个UIIImageView的手势识别器(UIPanGestureRecognizer),以实现拖动行为。我发现手势识别器对于这种行为是一种更可靠的方法


如果您不知道如何使用手势识别器,我可以发布一个简短的代码示例来演示如何拖动任何类型的UIView。你的问题让我有点困惑,但我假设你有一个包含10个UIImageView的UIScrollView,你想把它拖来拖去

我的建议是使用附加到每个UIIImageView的手势识别器(UIPanGestureRecognizer),以实现拖动行为。我发现手势识别器对于这种行为是一种更可靠的方法


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

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

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

self.scrollView.panGestureRecognizer.minimumNumberOfTouches = 2;
如果您想支持较旧版本的iOS,您需要做更多的工作:

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers){
  if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){
    ((UIPanGestureRecognizer *)gesture).minimumNumberOfTouches = 2;
  }
}
如果您想同时使用一个手指手势,有几种方法。您可以将
UIPangestureRecognitor
附加到每个图像视图。您可能需要使用
requiregestrerecognizer-tofail:
消息告诉滚动视图自己的
uipangestrerecognizer
以遵从图像视图识别器


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

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

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

self.scrollView.panGestureRecognizer.minimumNumberOfTouches = 2;
如果您想支持较旧版本的iOS,您需要做更多的工作:

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers){
  if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){
    ((UIPanGestureRecognizer *)gesture).minimumNumberOfTouches = 2;
  }
}
如果您想同时使用一个手指手势,有几种方法。您可以将
UIPangestureRecognitor
附加到每个图像视图。您可能需要使用
requiregestrerecognizer-tofail:
消息告诉滚动视图自己的
uipangestrerecognizer
以遵从图像视图识别器

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