From de47b47b7c9441edf0a3d2eb3beeca9f4ffc1dbf Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Sun, 19 May 2019 17:40:45 -0700 Subject: [PATCH] Fabric: findScrollViewComponentViewForView was moved to RCTScrollViewComponentView Summary: This way we can reuse this code in other RCTScrollViewComponentView-satellite components, especially in standard pull-to-refresh component. Reviewed By: mdvacca Differential Revision: D15403307 fbshipit-source-id: 5999f851f22db0f358887e1a86d610e163adcb1d --- .../ScrollView/RCTScrollViewComponentView.h | 5 +++++ .../ScrollView/RCTScrollViewComponentView.mm | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h index 373f2635e36..b476ead4289 100644 --- a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +++ b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h @@ -22,6 +22,11 @@ NS_ASSUME_NONNULL_BEGIN */ @interface RCTScrollViewComponentView : RCTViewComponentView +/* + * Finds and returns the closet RCTScrollViewComponentView component to the given view + */ ++ (RCTScrollViewComponentView *_Nullable)findScrollViewComponentViewForView:(UIView *)view; + /* * Returns an actual UIScrollView that this component uses under the hood. */ diff --git a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm index c72eb87122d..aaeda9b7544 100644 --- a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm @@ -31,6 +31,14 @@ using namespace facebook::react; CGSize _contentSize; } ++ (RCTScrollViewComponentView *_Nullable)findScrollViewComponentViewForView:(UIView *)view +{ + do { + view = view.superview; + } while (view != nil && ![view isKindOfClass:[RCTScrollViewComponentView class]]); + return (RCTScrollViewComponentView *)view; +} + - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) {