UITapGestureRecognizer 仅针对 UIScrollView 的起始区域触发
Posted
技术标签:
【中文标题】UITapGestureRecognizer 仅针对 UIScrollView 的起始区域触发【英文标题】:UITapGestureRecognizer only triggered for starting area of UIScrollView 【发布时间】:2016-06-20 12:18:11 【问题描述】:我在主视图控制器的 UIScrollView 中添加了几个子视图。每个子视图的视图控制器都有自己的点击识别器。问题是,只有在屏幕上的起始区域点击才会被识别。滚动视图并点击超出起始区域后,将不再调用点击处理程序。
这个 SO 帖子 UIButton in non-visible area of UIScrollView 似乎是相关的,但它的解决方案描述对我来说并不是很清楚......
可以在以下位置找到一个简单的报告项目:dropbox link
谢谢。
【问题讨论】:
什么问题,你已经为这两个部分添加了点击手势? 滚动视图的内容大小为2000*800,大于屏幕大小。当应用程序最初启动和用户录音时,点击处理程序被识别。如果您向右滚动屏幕并点击最右侧的区域,将不再触发点击处理程序。 @MikeAlter 这两部分是指滚动视图的可见部分和不可见部分吗?如果是这样,我如何为超出可见区域的部分添加点击手势? 【参考方案1】:请检查您的contentview
大小或setbackground color
以获取scrollview
和contentview
。 Contenview
我认为大小没有增加。
【讨论】:
对不起,如果我错过了一些明显的东西。如何检查内容视图。我没有在任何地方使用它。顺便说一句,我检查了滚动视图的大小,它肯定设置得足够大。我在简单的复制中也有背景色。谢谢。 您还面临问题吗? @jackX。解决方案是什么? @AviTsadok 检查您的内容视图的高度限制。【参考方案2】:我已经下载了你的项目,看到
SSubViewController *pvc = [SSubViewController controllerWithSubViewID:0];
pvc
框架超出范围
SSubViewController *pvc = [SSubViewController controllerWithSubViewID:0];
[self.scrollView addSubview:pvc.view];
[self addChildViewController:pvc];
[pvc.view setBackgroundColor:[UIColor grayColor]];
[pvc.view setFrame:CGRectMake(0, 0, 400, 200)];
[pvc didMoveToParentViewController:self];
SSubViewController *pvc1 = [SSubViewController controllerWithSubViewID:1];
[self.scrollView addSubview:pvc1.view];
[pvc1.view setBackgroundColor:[UIColor yellowColor]];
[self addChildViewController:pvc1];
[pvc1 didMoveToParentViewController:self];
[pvc1.view setFrame:CGRectMake(0, 400, 400, 200)];
现在看看颜色
你可以看到灰色和黄色框架
【讨论】:
知道了。那行得通。感谢迈克的详细解释!以上是关于UITapGestureRecognizer 仅针对 UIScrollView 的起始区域触发的主要内容,如果未能解决你的问题,请参考以下文章
使用 UITapGestureRecognizer 无法识别的选择器
UIlabel 中的 UITapGestureRecognizer 错误
带有点击事件的 UITapGestureRecognizer