反应本机PanResponder限制平移的Y值不起作用

时间:2020-05-12 17:18:51

标签: javascript react-native panresponder

使用React Native PanResponder,我试图限制用户缩放功能的范围。我试图在onPanResponderMove中有条件地设置值,但是当值达到零时,它将完全停止平移。

constructor(props) {
super(props);

this._pan = new Animated.ValueXY();

this._pan.addListener(value => {
  this._value = value;
  const {height: windowHeight} = Dimensions.get('window');
  this.props.onZoomProgress(
    Math.min(Math.max((value.y * -1) / windowHeight, 0), 0.5),
  );
});

this._panResponder = PanResponder.create({
  onMoveShouldSetPanResponder: (e, gestureState) => {
    // if (this._pan.y.__getValue() > 0) {
    //   return false;
    // }
    return true;
  },
  onPanResponderTerminationRequest: () => true,
  onPanResponderGrant: () => {
    return this.props.onZoomStart();
  },

  onPanResponderMove: (e, gestureState) => {
    if (this._pan.y.__getValue() > 0) {
      return null;
    } else {
      this._pan.setValue({y: gestureState.dy, x: 0});
    }
    // console.log(this._pan.y);
    console.log(this._pan.y.__getValue());
  },

  onPanResponderRelease: (e, gestureState) => {
    this._pan.extractOffset();
    this.props.onZoomEnd();
  },
});
}

有没有更好的方法来解决这个问题?

0 个答案:

没有答案