缩放时,UIScrollview 子视图无法识别手势
Posted
技术标签:
【中文标题】缩放时,UIScrollview 子视图无法识别手势【英文标题】:On zoom, UIScrollview subviews not recognizing gesture 【发布时间】:2012-10-25 18:43:30 【问题描述】:我有一个滚动视图,我在其中添加了一个图像视图作为子视图。滚动视图的内容大小与图像视图的大小(宽度和高度)相同。滚动视图外有两个按钮。当我单击它们中的任何一个时,都会将一个小矩形视图作为子视图添加到图像视图中。添加后,用户可以将这个矩形视图拖到 imageview 上的任意位置。
这工作正常,直到我捏缩放滚动视图。在viewForZoomingInScrollView:
方法中,我返回图像视图并且缩放工作正常。但是在缩放视图中,当我尝试在矩形视图周围拖动时,它不会移动。它不再识别平移手势。知道为什么会这样吗?
谢谢
黑色
【问题讨论】:
当您尝试拖动矩形视图时没有任何反应,还是滚动视图被平移? 当我尝试拖动矩形时,滚动视图被平移。但是矩形上也有一小部分,如果我拖动它,它确实会拖动矩形。 您能否提供设置滚动视图、矩形视图、手势识别器和平移处理方法的代码。我进行了快速测试,一切正常... 哦,等等,我刚刚意识到您提到将矩形视图添加为 UIImageView 的子视图?我不认为图像视图应该有子视图。如果您只是将矩形添加为滚动视图的子视图会发生什么? 在这种情况下,当我捏缩放时,矩形不会缩放。只有图像视图被缩放。因此我不得不将矩形添加到图像视图中。 【参考方案1】:根据您的最后一条评论,我建议您尝试以下方法:
在您的 viewDidLoad
方法中添加:
for (UIGestureRecognizer *gr in self.scrollView.gestureRecognizers)
if ([gr isKindOfClass:[UIPanGestureRecognizer class]])
[gr requireGestureRecognizerToFail:self.dragGR];
dragView 是你的矩形视图。
上面的工作可能不需要以下内容,但无论如何清理视图层次结构可能是个好习惯:
添加一个普通的 UIView 作为具有相同框架的图像视图的父视图,并将矩形视图添加为该新视图的子视图。在您的viewForZoomingInScrollView:
中返回该新视图。正如我在 cmets 中所说,我不认为将子视图添加到 UIImageViews 被认为是好的做法。但也许这只是我的看法:)
【讨论】:
【参考方案2】:这应该也可以,并且稍微简洁一些:
[self.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.myPanRecognizer];
【讨论】:
以上是关于缩放时,UIScrollview 子视图无法识别手势的主要内容,如果未能解决你的问题,请参考以下文章