react-native-image-view
react-native-image-view copied to clipboard
Jumps on first press
i fixed your onGestureMove
i added const justPressed = Math.abs(dy) < PRESS_TOLLERANCE; justPressed ? null : this.imageTranslateValue.y.setValue(y + dy)
`onGestureMove(event: NativeEventType, gestureState: GestureState) { if (this.isScrolling && this.state.scrollEnabled) { return; }
if (this.currentTouchesNum === 1 && event.touches.length === 2) {
this.initialTouches = event.touches;
}
const {
images,
imageIndex,
imageScale,
imageTranslate,
screenDimensions,
} = this.state;
const {screenHeight} = screenDimensions;
const {touches} = event;
const {x, y} = imageTranslate;
const {dx, dy} = gestureState;
const imageInitialScale = this.getInitialScale();
const {height} = images[imageIndex];
if (imageScale !== imageInitialScale) {
this.imageTranslateValue.x.setValue(x + dx);
}
// Do not allow to move image vertically until it fits to the screen
if (imageScale * height > screenHeight) {
this.imageTranslateValue.y.setValue(y + dy);
}
// if image not scaled and fits to the screen
if (
scalesAreEqual(imageScale, imageInitialScale) &&
height * imageInitialScale < screenHeight
) {
const backgroundOpacity = Math.abs(
dy * BACKGROUND_OPACITY_MULTIPLIER
);
const justPressed = Math.abs(dy) < PRESS_TOLLERANCE;
justPressed ? null : this.imageTranslateValue.y.setValue(y + dy)
this.modalBackgroundOpacity.setValue(
backgroundOpacity > 1 ? 1 : backgroundOpacity
);
}
const currentDistance = getDistance(touches);
const initialDistance = getDistance(this.initialTouches);
const scrollEnabled = Math.abs(dy) < FREEZE_SCROLL_DISTANCE;
this.setState({scrollEnabled});
if (!initialDistance) {
return;
}
if (touches.length < 2) {
return;
}
let nextScale = getScale(currentDistance, initialDistance) * imageScale;
if (nextScale < imageInitialScale) {
nextScale = imageInitialScale;
} else if (nextScale > SCALE_MAXIMUM) {
nextScale = SCALE_MAXIMUM;
}
this.imageScaleValue.setValue(nextScale);
this.currentTouchesNum = event.touches.length;
}`
would be nice if you can check it and add it too...
What's the value of the PRESS_TOLERANCE constant? Thanks for this, by the way!