Fix crash by implementing scrollViewDidScroll in RCTEnhancedScrollView #54583
+6
−0
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:
Fix crash by implementing the missing
scrollViewDidScroll:method inRCTEnhancedScrollView.Root Cause
RCTEnhancedScrollViewconforms toUIScrollViewDelegateand adds itself as a delegate to its delegate splitter, but only implements two delegate methods:scrollViewWillEndDragging:withVelocity:targetContentOffset:scrollViewDidZoom:It was missing
scrollViewDidScroll:, which is the most commonly called delegate method. When the splitter has multiple delegates, it sets itself as the UIScrollView's delegate and forwards messages to all registered delegates. WhenUIScrollViewcallsscrollViewDidScroll:on the splitter, the splitter attempts to forward it toRCTEnhancedScrollView, which doesn't implement it → crash: "unrecognized selector sent to instance".Solution
Implement an empty
scrollViewDidScroll:method inRCTEnhancedScrollView.Changelog:
[iOS][Fixed] - Fix crash in RCTEnhancedScrollView when scrollViewDidScroll is called
Reviewed By: cipolleschi
Differential Revision: D86813725