From d9143225213cf4d6c94ec68656f99c0f988a53ac Mon Sep 17 00:00:00 2001 From: Frank Marceau Date: Tue, 12 Dec 2023 10:22:01 -0500 Subject: [PATCH] [iOS] Prevent background view opacity to go to zero to prevent other gestures while pinching --- ios/RNPinchableView.m | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ios/RNPinchableView.m b/ios/RNPinchableView.m index 9709f91..61a8188 100644 --- a/ios/RNPinchableView.m +++ b/ios/RNPinchableView.m @@ -90,7 +90,11 @@ - (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer view.layer.anchorPoint = anchorPoint; view.center = center; - view.frame = CGRectMake(absoluteOrigin.x, absoluteOrigin.y, initialFrame.size.width, initialFrame.size.height); + + if (!isnan(absoluteOrigin.x) && !isnan(absoluteOrigin.y)) { + view.frame = CGRectMake(absoluteOrigin.x, absoluteOrigin.y, initialFrame.size.width, initialFrame.size.height); + } + [initialSuperView setNeedsLayout]; [view setNeedsLayout]; } @@ -114,8 +118,13 @@ - (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer transform = CGAffineTransformTranslate(transform, translate.x, translate.y); transform = CGAffineTransformScale(transform, scale, scale); view.transform = transform; - - backgroundView.layer.opacity = MIN(scale - 1., .7); + + CGFloat layerOpacity = MIN(scale - 1., .7); + if (layerOpacity <= 0) { + layerOpacity = .05; + } + + backgroundView.layer.opacity = layerOpacity; lastTouchPoint = currentTouchPoint; }