我有一个 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/