diff --git a/Libraries/Components/ScrollView/ScrollView.js b/Libraries/Components/ScrollView/ScrollView.js index 92cdab05ac0bc1..4f8efce54abd4e 100644 --- a/Libraries/Components/ScrollView/ScrollView.js +++ b/Libraries/Components/ScrollView/ScrollView.js @@ -191,7 +191,17 @@ var ScrollView = React.createClass({ RCTUIManager.scrollTo( this.getNodeHandle(), destX || 0, - destY || 0 + destY || 0, + true + ); + }, + + scrollWithoutAnimationTo: function(destY?: number, destX?: number) { + RCTUIManager.scrollTo( + this.getNodeHandle(), + destX || 0, + destY || 0, + false ); }, diff --git a/React/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m index a0e7285c6b0dfb..3e55af98956494 100644 --- a/React/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -1034,14 +1034,14 @@ - (void)setMainScrollViewTag:(NSNumber *)reactTag }]; } -- (void)scrollToOffsetWithView:(NSNumber *)reactTag scrollToOffsetX:(NSNumber *)offsetX offsetY:(NSNumber *)offsetY +- (void)scrollToOffsetWithView:(NSNumber *)reactTag scrollToOffsetX:(NSNumber *)offsetX offsetY:(NSNumber *)offsetY animated:(BOOL)animated { RCT_EXPORT(scrollTo); [self addUIBlock:^(RCTUIManager *uiManager, RCTSparseArray *viewRegistry){ UIView *view = viewRegistry[reactTag]; if ([view conformsToProtocol:@protocol(RCTScrollableProtocol)]) { - [(id)view scrollToOffset:CGPointMake([offsetX floatValue], [offsetY floatValue])]; + [(id)view scrollToOffset:CGPointMake([offsetX floatValue], [offsetY floatValue]) animated:animated]; } else { RCTLogError(@"tried to scrollToOffset: on non-RCTScrollableProtocol view %@ with tag %@", view, reactTag); }