我正在尝试在UIScrollView内的视图上确定单个选项卡。问题是UIScrollview捕获了所有手势。
到目前为止我尝试了什么: 我在UIScrollView中覆盖了以下方法:
-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
UITouch *touch = [touches anyObject];
if([touch tapCount]== 2) return YES;
return NO;
}
这很好用,我现在可以在我的UIView上到达UITapGestureRecognize,遗憾的是我只能检测到双击,因为[touch tapCount] == 1总是被调用(在UIScrollView中拖动或缩放)。但实际上UIScrollview不需要“单击功能”
有没有办法在此方法中决定拖动(滚动或缩放)和单击?我找不到..
-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
提前致谢 FABI
答案 0 :(得分:6)
如果触摸不滚动滚动视图,听起来你只想要点击识别器成功。这非常简单,因为滚动视图使用平移手势识别器进行滚动。在iOS 5上,您可以这样做:
[self.tapRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer];
如果您想支持旧版本的iOS,则必须执行此操作:
for (UIGestureRecognizer *recognizer in self.scrollView.gestureRecognizers) {
if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]])
[self.tapRecognizer requireGestureRecognizerToFail:recognizer];
答案 1 :(得分:0)
touchesShouldBegin:
是UIView上的委托方法。它不是UIGestureRecognizer的一部分。
您需要创建一个UITapGestureRecognizer,设置您想要触发识别器的点击次数并将其添加到您的视图中。
答案 2 :(得分:0)
我假设你的意思是“单击” - 你的scrollView属于绑定到你的控制器的UIView。将点击手势识别器分配给该UIView。它首先选择所有手势,然后传递给它不感兴趣的手势。