Ita*_*ski 39 objective-c uiscrollview ios uitapgesturerecognizer
我UIScrollView添加了一个单击手势识别器来显示/隐藏一些UI叠加使用:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[scrollView addGestureRecognizer:singleTap];
Run Code Online (Sandbox Code Playgroud)
和:
- (void)handleTap:(UITapGestureRecognizer *)sender {
// report click to UI changer
}
Run Code Online (Sandbox Code Playgroud)
我在底部添加了一个简单的表格视图UIScrollView.一切正常(水平和垂直滚动)但问题是点击仅由手势识别器(上图)识别,而不是由简单的表格视图识别.如果我删除注册手势监听器的行,一切正常,表视图会通知自己.
这就好像手势识别器功能"吃掉"表视图上的点击事件并且不向下传播它们.
任何帮助表示赞赏
zam*_*rey 76
这应该可以解决您的问题.
检测UIScrollView上的触摸事件和UIView的组件[放置在UIScrollView中]
这个想法是告诉手势识别器不要吞下触摸事件.要执行此操作,您需要将singleTap的cancelsTouchesInView属性设置NO为YES,默认情况下.
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
singleTap.cancelsTouchesInView = NO;
[scrollView addGestureRecognizer:singleTap];
Run Code Online (Sandbox Code Playgroud)
Jay*_*eep 12
Swift 3.0
let singleTap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
singleTap.cancelsTouchesInView = false
singleTap.numberOfTapsRequired = 1
scrollView.addGestureRecognizer(singleTap)
Run Code Online (Sandbox Code Playgroud)
选择器方法就像.
@objc func handleTap(_ recognizer: UITapGestureRecognizer) {
// Perform operation
}
Run Code Online (Sandbox Code Playgroud)
您可以设置要包含/排除哪些对象进行触摸.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gesture shouldReceiveTouch:(UITouch *)touch {
if (touch.view == [self view]) {
return YES;
}
return NO;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这在Swift 3 / Xcode 8 中对我有用
self.scrollView.touchesShouldCancel(in: ** the view you want the touches in **)
self.scrollView.canCancelContentTouches = false
Run Code Online (Sandbox Code Playgroud)
祝你好运!
| 归档时间: |
|
| 查看次数: |
51772 次 |
| 最近记录: |