ios - ScrollView 手势识别器吃掉所有的触摸事件

标签 ios objective-c uiscrollview uitapgesturerecognizer

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

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

和:

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

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

就好像手势识别器函数“吃掉”了表格 View 上的点击事件,而不是向下传播它们。

感谢任何帮助

最佳答案

这应该可以解决您的问题。
Detect touch event on UIScrollView AND on UIView's components [which is placed inside UIScrollView]
这个想法是告诉手势识别器不要吞噬触摸事件。为此,您需要将 singleTap 的 cancelsTouchesInView 属性设置为 NO,默认为 YES

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

关于ios - ScrollView 手势识别器吃掉所有的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882737/

相关文章:

ios - 旋转关闭表格 View 扩展部分时动画不会执行

objective-c - 在 Objective C 中使用正则表达式捕获某些数据之前和之后的字符串

ios - 当我取消添加到弹出窗口中的联系人时 UItextView 崩溃

ios - UIScrollView 在键盘关闭时停止滚动

ios - 许多应用程序,如 Tweetbot、Facebook 等,都允许您通过向下/向上拉动来关闭图像覆盖。这是如何实现的?

iphone - 在表格 View 中触摸单元格后标签栏消失

ios - 如何使用证书身份验证调用 HTTPS URL

ios - 使用单位符号格式化本地化数字

iphone - 从头开始创建社交 iOS 应用

ios - 使用(自定义,交互式) View Controller 呈现和解雇处理 ScrollView