ScrollView手势识别器吃掉所有触摸事件 [英] ScrollView gesture recognizer eating all touch events

查看:137
本文介绍了ScrollView手势识别器吃掉所有触摸事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 UIScrollView 我添加了一个单击手势识别器来显示/隐藏一些UI叠加使用:

I have a UIScrollView to which I added a single tap gesture recognizer to show/hide some UI overlay using:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[scrollView addGestureRecognizer:singleTap];

和:

- (void)handleTap:(UITapGestureRecognizer *)sender {
    // report click to UI changer
}

我在底部添加了一个简易表视图的UIScrollView 。一切正常(水平和垂直滚动)但问题是点击仅由手势识别器识别(上图),而不是简单的表格视图。
如果我删除注册手势监听器的行,一切正常,表视图会通知自己点击。

I added an easy table view to the bottom of the UIScrollView. Everything works right (scrolling both horizontally and vertically) but the problem is that taps are recognized only by the gesture recognizer (above), but not by the easy table view. If I remove The line that registers the gesture listener, everything works fine, the table view notices taps on itself.

就好像手势识别器功能吃桌面视图上的点击事件,不向下传播它们。

It's as if the gesture recognizer function "eats" the tap events on the table view and doesn't propagate them downward.

感谢任何帮助

推荐答案

这应该可以解决您的问题。

检测UIScrollView上的触摸事件和UIView的组件[放在UIScrollView中]

想法是告诉手势识别器不要吞下触摸事件。为此,您需要将singleTap的 cancelsTouchesInView 属性设置为,即 YES 默认情况下。

This should solve your problem.
Detect touch event on UIScrollView AND on UIView's components [which is placed inside UIScrollView]
The idea is to tell the gesture recognizer to not swallow up the touch events. To do this you need to set singleTap's cancelsTouchesInView property to NO, which is YES by default.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
singleTap.cancelsTouchesInView = NO;
[scrollView addGestureRecognizer:singleTap]; 

这篇关于ScrollView手势识别器吃掉所有触摸事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆