在移动过程中反应原生停止平移手势

时间:2018-01-01 23:52:10

标签: reactjs react-native

我想在PanResponder系统仍然移动时停止它。即如果满足条件,则取消或结束手势。

我有一个Animated.Value连接到手势并且该值上有一个监听器。如果它大于100,我想暂停平移手势。

2 个答案:

答案 0 :(得分:0)

您需要在onMoveShouldSetPanResponder中返回false以停止PanResponder。请考虑以下示例:

this._panResponder = PanResponder.create({
  {...}
  onMoveShouldSetPanResponder: (e, gestureState) => {
    if (stopPanResponder) {
      return false;
    }
    return true;
  },
  {...}
  onPanResponderTerminationRequest: () => true
});

答案 1 :(得分:0)

您可以通过在父视图上启用PanReponder来停止PanResponder系统。

documentation中,我们有:

  

onStartShouldSetResponder和onMoveShouldSetResponder用   冒泡模式,其中最深的节点首先被调用。那意味着   当多个视图时,最深的组件将成为响应者   为* ShouldSetResponder处理程序返回true。这是可取的   大多数情况下,因为这样可以确保所有控件和按钮都可用。

     

但是,有时父母会希望确保它成为   响应者。这可以通过使用捕获阶段来处理。之前   响应器系统从最深层的组件冒出来,它将做一个   捕获阶段,在* ShouldSetResponderCapture上触发。所以如果父母   View希望防止孩子在触摸时成为响应者   开始时,应该有一个onStartShouldSetResponderCapture处理程序   返回true。

在这种情况下,应在满足条件时为父视图设置onMoveShouldSetPanResponderCapture。

onMoveShouldSetPanResponderCapture: () => this.isMyConditionTrue(),

并且,还对子响应者设置以下属性:

onPanResponderTerminationRequest: () => true,

以允许父母捕获响应者。