我在我的一个UIView应用程序中使用以下代码。
我想在touchesBegan中处理单个触摸事件,在touchesMoved中处理多个触摸。
代码在模拟器中工作。但是当我将它转移到iPhone设备时,我发现当我用两根手指触摸时,下面的代码仍会偶尔运行,这不应该是真的,因为我有“if([touches count] == 1)”声明。 “OCCASIONALLY”意味着“if”语句有时会起作用,但并非总是如此。
是否由于2个手指同时没有触摸屏幕,并且说在另一个手指后面0.1秒,所以事件被触发为1 + 1手指而不是同时触及2个手指?
任何人都可以提供帮助吗?
- (void) touchesBegan: (NSSet * ) touches withEvent: (UIEvent * ) event
{
// handle only 1 finger
if ([touches count] == 1)
{
NSLog(@"touchesBegan touches = 1");
pt = [[touches anyObject] locationInView:self];
[self setNeedsDisplay];
}
}
答案 0 :(得分:0)
为此创建手势识别器可能更容易。一个检测到1个手指触摸,另一个检测到2个手指移动。应使用UIGestureRecognizer作为基类轻松创建这些。然后,您可以使1手指触摸取决于2手指移动失败,这意味着为了触发1手指触摸事件,2手指移动手势识别器 失败。
您可以通过实施以下方法来实现:
- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer
手势识别器是非常强大的东西,我建议你使用它们!