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