我正在使用React Native开发一个应用,该应用必须尽快响应点击手势,因为在一秒钟内可以触发多个点击事件。无需双击或移动手势,但需要同时进行轻击。我一直在使用onTouchStart
和PanResponder | 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可以轻松完成工作。因此,您可能正在使用它来做正确的事!