【发布时间】:2017-08-03 16:27:01
【问题描述】:
我正在使用 React Native 开发一个应用程序,它必须尽快响应点击手势,因为一秒钟内可以触发多个点击事件。无需双击或移动手势,但需要注意同时点击。我一直在测试 onTouchStart 和 PanResponder | onPanResponderGrant 并看到:
-
onTouchStart在同时轻按两次时会触发两次,而onPanResponderGrant只会调用一次。 -
即使我有
onMoveShouldSetPanResponder到false,onPanResponderMove也会被触发,并且当两个点击同时或一秒钟内有多个点击时会触发多次。 - 在一秒钟内完成多次点击时,
onTouchStart工作正常,但onPanResponderGrant触发的次数更少。
基于以上原因,我认为我最好使用onTouchStart。
现在的问题是:我是否应该使用onTouchStart,即使React Native docs 建议使用PanResponder 进行多点触控手势?
PanResponder 将多个触摸整合为一个手势。它使单点触控手势对额外的触摸具有弹性,并可用于识别简单的多点触控手势。
或者我错过了PanResponder 的一些东西?
编辑:
另外,gestureState.numberActiveTouches 始终为 1,同时点击两次时的事件。我认为这可以解决问题。
【问题讨论】:
-
这是滚动视图吗?
-
@sooper - 不,是给一些鼓用的。
-
嗨@Manolo,我的回答令人满意吗?如果是这样,请接受它,否则让我们知道缺少什么:)。 (编辑:啊,我的错,赏金正在取代我想的检查图标)
-
@Jeremie - 嗯,你的回答是基于常识并且是有道理的,但是多点触控手势呢?他们不会同时被解雇。为什么不适用于
PanResponder?这只是没有记录的行为吗? -
要检测多点触控,我想我们必须容忍用户不会同时按下 3 个手指,因此 API 为用户留下了一些延迟来实现它。这解释了为什么它每秒被触发几次而不是更多。我不确定我是否理解您的评论“不会同时触发多点触控手势”。对我来说听起来很复杂,您希望用户用多个手指同时按下 2 个不同的鼓吗?
标签: javascript react-native touch gesture