【问题标题】:iOS - detect when more than one finger is on the screeniOS - 检测何时超过一根手指在屏幕上
【发布时间】:2010-09-30 17:48:37
【问题描述】:

我正在寻找同时检测屏幕上不止一根手指的最佳方法。我没有检测到轻敲或捏合,只是发生了不止一次触摸的事实。似乎没有任何手势识别器。最好的方法是什么?

【问题讨论】:

  • 这是在屏幕上的任何地方,还是在特定的视图上?

标签: iphone ipad touch detection gesture-recognition


【解决方案1】:

在 touchesBegan、touchesMoved 和 touchesEnded 方法中,一个参数是 event,它是一个 UIEvent 对象。屏幕上的手指数是[[event allTouches]count]。

[已编辑,因为 Josh Hinman 指出我之前做错了——我之前在这些相同方法中对 touches 参数使用 [touches count] 的建议将不起作用。]

【讨论】:

  • 我认为这不能可靠地为您提供屏幕上的触摸总数;只有正在更新的触摸次数。换句话说,如果我在屏幕上有三根手指,并且我移动一根手指,同时保持其他两根不动,那么 touchesMoved: 将使用一次触摸(我移动的那根)的 NSSet 调用。
【解决方案2】:

阅读-touchesBegan:withEvent: 方法。它是多点触控事件处理的入口点。

这是关于多点触控事件的开发者库链接: https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html

【讨论】:

  • 我在视图控制器中试过这个,但它从来没有被调用过:-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"num touches: %d ", [触摸计数]); }
【解决方案3】:
  • (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    NSLog(@"%lu",[[event allTouches] count]); }

【讨论】:

    【解决方案4】:

    单点/多点触控对您来说是透明的 - 您只会收到有关触控开始/移动/结束/点击的位置的通知。如果同时发生两次触摸,您将收到两者的通知。

    我不知道有任何内置函数可以确定您看到的触摸序列是否包含捏合 - 但您可以查看 Apple 的“触摸”示例代码以获得灵感。

    https://developer.apple.com/library/ios/#samplecode/Touches/

    【讨论】:

      【解决方案5】:

      您可以尝试使用 UITapGestureRecognizer 类,并将 numberOfTouchesRequired 属性设置为 2。

      请注意,这仅在视图上的 multipleTouchEnabled 设置为 YES 时才有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多