Respect JS responder inside Fabric ScrollView#57050
Open
sorinc03 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary:
Fixes #51970.
Fabric ScrollView currently only checks whether one of its own ancestors is the active JS responder before allowing UIKit to cancel touches and start scrolling. When a
PanResponderis attached to content inside the ScrollView, the responder marker is set on that touched content view, so the ancestor-only check can miss it and the ScrollView can keep handling the gesture.This updates the Fabric iOS ScrollView cancellation path to also walk the touched content view's ancestry. If the touched view or one of its parents inside the ScrollView is the active JS responder, the ScrollView keeps the existing behavior of not cancelling those touches to begin scrolling.
Changelog:
[IOS] [FIXED] - Respect active JS responders inside Fabric ScrollView content when deciding whether touches should start scrolling.
Test Plan:
node_modules/.bin/clang-format --dry-run --Werror packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mmgit diff --checkenv RCT_NEW_ARCH_ENABLED=1 xcodebuild -workspace packages/rn-tester/RNTesterPods.xcworkspace -scheme RNTester -configuration Debug -destination 'id=4FEBA81F-F2FA-453A-A039-2A62750D88FD' -derivedDataPath /tmp/rn-rntester-51970-derived ONLY_ACTIVE_ARCH=YES CODE_SIGNING_ALLOWED=NO build