From 8cf7a0e8156f21461cee51007cae7debd00f92a4 Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Tue, 26 May 2015 17:50:43 -0700 Subject: [PATCH 1/2] [ReactNative] Make ScrollView detect taps on sticky headers --- React/Views/RCTScrollView.m | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/React/Views/RCTScrollView.m b/React/Views/RCTScrollView.m index d4a2ad5e95a3cf..a59e7ff137a73c 100644 --- a/React/Views/RCTScrollView.m +++ b/React/Views/RCTScrollView.m @@ -223,6 +223,28 @@ - (void)dockClosestSectionHeader } } +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event +{ + __block UIView *stickyHeader; + + [_stickyHeaderIndices enumerateIndexesWithOptions:0 usingBlock:^(NSUInteger idx, BOOL *stop) { + stickyHeader = [self contentView].reactSubviews[idx]; + CGPoint convertedPoint = [stickyHeader convertPoint:point fromView:self]; + + if ([stickyHeader hitTest:convertedPoint withEvent:event]) { + *stop = YES; + } else { + stickyHeader = nil; + } + }]; + + if (stickyHeader) { + return stickyHeader; + } else { + return [super hitTest:point withEvent:event]; + } +} + @end @implementation RCTScrollView From 302337c9a27f8ff4a085c7af8923eb6de18a41fa Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Tue, 26 May 2015 18:14:08 -0700 Subject: [PATCH 2/2] Cleaner return statement --- React/Views/RCTScrollView.m | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/React/Views/RCTScrollView.m b/React/Views/RCTScrollView.m index a59e7ff137a73c..d64a583af27d47 100644 --- a/React/Views/RCTScrollView.m +++ b/React/Views/RCTScrollView.m @@ -238,11 +238,7 @@ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event } }]; - if (stickyHeader) { - return stickyHeader; - } else { - return [super hitTest:point withEvent:event]; - } + return stickyHeader ?: [super hitTest:point withEvent:event]; } @end