[iOS] Fix edge swipe (interactive pop) gesture recognition #1370
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
See video here: https://twitter.com/radexp/status/1506981953156927499
react-native-screens accidentally broke a subtle behavior of the edge swipe/interactive pop gesture recognition. In simple vanilla iOS app, the edge swipe is easily recognized even when touch is panning across a scroll view diagonally or while scroll view is in motion. Because RNS does not have a normal view/view controller hierarchy (or some other subtle reason), the pop gesture breaks.
RNS sets
_controller.interactivePopGestureRecognizer.delegate = self;
so it's not completely broken… but this subtle behavior was still broken, driving me bonkers over the past couple of years :)I don't know the true root cause of this issue, this could require deeper changes to RNS, for the default native behavior to just work. Regardless, setting interactive pop gesture recognizer to recognize simultaneously with scroll view's pan gesture recognizer fixes popping, while setting it to fail by scroll view's pan recognizer fixes scroll view still moving together with the edge swipe.
Changes
Test code and steps to reproduce
Checklist