From a3918f4102bc7adcf0e512d92d9294cdece17686 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Mon, 21 Dec 2020 13:59:02 -0800 Subject: [PATCH] Cancel touches if surface touch handler can be prevented Summary: Changelog: [internal] If `otherGestureRecognizer` prevents Fabric's gesture recogniser, we need to manually reset the inner state. This cancels any currently active touches. Reviewed By: shergin Differential Revision: D25664384 fbshipit-source-id: 9e3cd41351381bcfed2836dad3e80d5f021f936c --- React/Fabric/RCTSurfaceTouchHandler.mm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/React/Fabric/RCTSurfaceTouchHandler.mm b/React/Fabric/RCTSurfaceTouchHandler.mm index e556a3af6d1..6c06fa764b7 100644 --- a/React/Fabric/RCTSurfaceTouchHandler.mm +++ b/React/Fabric/RCTSurfaceTouchHandler.mm @@ -410,4 +410,14 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithTarget : (id)target action : (SEL)act return [self canBePreventedByGestureRecognizer:otherGestureRecognizer]; } +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer + shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer +{ + BOOL canBePrevented = [self canBePreventedByGestureRecognizer:otherGestureRecognizer]; + if (canBePrevented) { + [self reset]; + } + return NO; +} + @end