From 33ffa79a51d4db9ba69148861f2da304646175cd Mon Sep 17 00:00:00 2001 From: Oleg Lokhvitsky Date: Mon, 21 May 2018 11:09:52 -0700 Subject: [PATCH] Prevent RefreshControl from getting stuck when a parent is scrolled horizontally Reviewed By: achen1 Differential Revision: D8044763 fbshipit-source-id: 8f3351de13eb17d2937f3b9e76500889398f9c59 --- .../react/views/swiperefresh/ReactSwipeRefreshLayout.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.java b/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.java index 3ffa43dfd..2512b2b21 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/ReactSwipeRefreshLayout.java @@ -89,6 +89,14 @@ public class ReactSwipeRefreshLayout extends SwipeRefreshLayout { public boolean onInterceptTouchEvent(MotionEvent ev) { if (shouldInterceptTouchEvent(ev) && super.onInterceptTouchEvent(ev)) { NativeGestureUtil.notifyNativeGestureStarted(this, ev); + + // If the pull-to-refresh gesture is interrupted by a parent with its own + // onInterceptTouchEvent then the refresh indicator gets stuck on-screen + // so we ask the parent to not intercept this touch event after it started + if (getParent() != null) { + getParent().requestDisallowInterceptTouchEvent(true); + } + return true; } return false;