使用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();
},
});
}
有没有更好的方法来解决这个问题?