繁体   English   中英

UIScrollview,向下移动响应者链

[英]UIScrollview, Move down responder chain

我会尽量保持简单。

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

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

无论如何,我可以进行切换,以便首先检查是否触摸了图像,如果没有,则将响应传递到滚动视图。

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

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

如果您使用的是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附加到每个图像视图。 您可能需要使用requireGestureRecognizerToFail:消息告诉滚动视图自己的UIPanGestureRecognizer推迟到图像视图识别器。

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

您的问题让我有些困惑,但是我假设您有一个UIScrollView,其中包含10个要拖动的UIImageViews。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM