iOS:无法识别子视图上的手势
Posted
技术标签:
【中文标题】iOS:无法识别子视图上的手势【英文标题】:iOS: Gesture on child view not recognized 【发布时间】:2012-02-25 08:17:53 【问题描述】:我有一个 UIScrollView 作为我的根视图,还有一个 UIImageView(我们称之为父视图)作为根视图的子视图。然后我添加另一个 UIImageView (lat's call it child view)作为父视图的子视图。子视图不包含在父视图的边界中。这是我的视图布局的可视化表示。
................................
. root view .
. ......... .
. .............. . child . .
. .parent view . . view . .
. .............. ......... .
. .
................................
现在,当我将 UIPanGestureRecognizer 添加到子视图时,无法识别手势。我已经检查了 userInteractionEnabled 和所有内容。当我将子视图设置为根视图的子视图时,手势被正确识别。有谁知道是什么导致了这个问题?
【问题讨论】:
【参考方案1】:我认为这个问题是因为您将UIGestureRecognizer
添加到在其父边界中不可见的东西上。如果您在parentView 上设置clipsToBounds = YES
,则不会显示childView,对吗?这就是它的处理方式。您可能会看到它,但“它不存在”。
是这样的:你在厨房里,你可以听到客厅里的电视,你知道它在那里,但你看不到它.另一方面,如果墙壁是不可见的,你可以看到它,但你不能与它互动。因为你不能穿墙。
希望这对您有所帮助。
【讨论】:
我也是这么想的。但我需要将子视图附加到父视图,以便它们可以一起移动。有没有办法在不使用子视图的情况下实现这一点? 您可以使用 UIView 作为父视图,并将两个图像都添加到这个视图中,并将 GestureRecognizer 附加到 UIView 而不是其中一个图像。当您移动大视图时,这将使两个 em 都移动。 我接受这个作为我问题的答案。这对其他 ios 程序员很有帮助,因为遇到这种情况并不常见。【参考方案2】:为您的子视图设置tag
:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(singleTapGestureCaptured:)];
[[rootview viewWithTag:111]addGestureRecognizer:singleTap];
-(void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
//your code;
【讨论】:
我已经将 UIGestureRecognizer 添加到我的子视图中。问题是手势无法识别,即视图不响应点击、平移等 我试过了,你是对的 Ryan,它不起作用。添加子视图时,您应该调整父视图的大小。您可能必须重写 sizeThatFits 方法。以上是关于iOS:无法识别子视图上的手势的主要内容,如果未能解决你的问题,请参考以下文章