我有一个带有 2 个 subview 的 UIView
,我们称它为 View A
:
- 一个基本的
UIView
,称为B
UIScrollView
,调用C
我在 View A
中覆盖了以下方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
当我触摸 View B
时,touchesBegan:withEvent:
和 touchesEnded:withEvent:
被调用,但是如果我触摸 UIScrollView
( View C
),这里没有调用。
我知道这是预期的行为,但我想了解原因。我找不到任何明确的答案。有什么想法吗?
最佳答案
使用 TapGestureRecognizer 代替 touchBegan 方法
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
singleTapGestureRecognizer.numberOfTapsRequired = 1;
singleTapGestureRecognizer.enabled = YES;
singleTapGestureRecognizer.cancelsTouchesInView = NO;
[scrollView addGestureRecognizer:singleTapGestureRecognizer];
- (void)singleTap:(UITapGestureRecognizer *)gesture {
//handle taps
}
快速版本:
let singleTapGestureRecognizer = UITapGestureRecognizer(target: self, action: "singleTap:")
singleTapGestureRecognizer.numberOfTapsRequired = 1
singleTapGestureRecognizer.enabled = true
singleTapGestureRecognizer.cancelsTouchesInView = false
scrollViewH.addGestureRecognizer(singleTapGestureRecognizer)
func singleTap(sender: UITapGestureRecognizer) {
println("handle taps ")
}
关于ios - UIScrollView 和 touchesBegan/touchesEnded 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28873530/