diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt index 69b5a99ee2..0e4960a87e 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt @@ -88,7 +88,12 @@ class PinchGestureHandler : GestureHandler() { this.focalPointY = point.y } - if (sourceEvent.actionMasked == MotionEvent.ACTION_UP) { + val isLastRequiredPointerLifted = sourceEvent.actionMasked == MotionEvent.ACTION_POINTER_UP && + event.pointerCount - 1 < MIN_POINTERS + + if (sourceEvent.actionMasked == MotionEvent.ACTION_UP || + isLastRequiredPointerLifted + ) { when (state) { STATE_UNDETERMINED -> cancel() STATE_ACTIVE -> end() @@ -125,4 +130,8 @@ class PinchGestureHandler : GestureHandler() { override fun createEventBuilder(handler: PinchGestureHandler) = PinchGestureHandlerEventDataBuilder(handler) } + + companion object { + private const val MIN_POINTERS = 2 + } }