UIView中的多重触摸事件

时间:2011-06-24 13:44:17

标签: iphone uiview touch

我在我的一个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];
      }
    }

1 个答案:

答案 0 :(得分:0)

为此创建手势识别器可能更容易。一个检测到1个手指触摸,另一个检测到2个手指移动。应使用UIGestureRecognizer作为基类轻松创建这些。然后,您可以使1手指触摸取决于2手指移动失败,这意味着为了触发1手指触摸事件,2手指移动手势识别器 失败。

您可以通过实施以下方法来实现:

- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer

手势识别器是非常强大的东西,我建议你使用它们!

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html

相关问题