我正在使用React Native开发一个应用,该应用必须尽快响应点击手势,因为在一秒钟内可以触发多个点击事件。无需双击或移动手势,但需要同时进行轻击。我一直在使用onTouchStartPanResponder | onPanResponderGrant进行测试,发现:

当两次轻击同时发生时,

  • onTouchStart被触发两次,而onPanResponderGrant仅被调用一次。
  • 即使我将onPanResponderMove转换为onMoveShouldSetPanResponder,也会触发
  • false,并且在同时进行两次敲击或在一秒钟内有多次敲击时,会触发多次。
  • 一秒钟进行几次轻敲,onTouchStart可以正常工作,但是onPanResponderGrant的发射次数更少。

  • 基于上述原因,我认为最好使用onTouchStart

    现在的问题是:即使React Native docs建议将onTouchStart用于多点触摸手势,我也应该使用PanResponder吗?



    还是我缺少PanResponder

    编辑:

    此外,gestureState.numberActiveTouches始终为1,这是两个轻击同时发生的事件。我认为这可以解决问题。

    最佳答案

    从PanResponder的定义中,我了解到它用于解释多点触摸手势并呈现1个 Action 。
    就像我用两根手指在图像上点击,然后可以将图像复制到剪贴板。

    似乎您想要一种不同的行为:我用2个手指敲击1个鼓c,但您想获得2种声音。
    就像您将鼓分成无数个按钮一样,无论您做什么,每次轻按都会得到一个单独的声音。

    然后,您不想使用PanResponder,因为它将尝试将一堆 Action 解释为一个声音,而您希望每个 Action 都产生一个单独的声音。并且onTouchStart可以轻松完成工作。因此,您可能正在使用它来做正确的事!

    10-04 21:25