2017-08-07 48 views
0

我想創建一個輪播自動滾動,直到用戶滾動/觸摸ScrollView本身。React Native:ScrollView with auto scroll

自動滾動本身與使用scrollView.scrollTo正常工作,但我怎麼能檢測用戶是否與ScrollView交互?我看了一下onScroll事件,但在用戶生成的事件和通過調用scrollTo生成的事件之間似乎沒有區別。

另外我想知道是否有可能直接從ScrollView獲取當前滾動位置,而不是每次從onScroll事件中讀取它。

我非常感謝任何提示和建議。

回答

2

通過挖掘ScrollView's source code您可以注意到一些無證回調,它將幫助您實現您的目標,即onTouchStartonTouchEnd。這兩個回調僅在用戶與ScrollView進行交互時觸發,而不是以編程方式滾動時觸發。

您可能需要清除onTouchStart上的自動滾動間隔,並在延遲onTouchEnd後重新啓動。

關於你的下一個問題,答案是否定的。據我所知,目前沒有getter被暴露來檢索當前的滾動位置。因此,您需要依靠傳遞給onScroll的事件,檢索event.nativeEvent.contentOffset['x' or 'y'],並將其存儲在組件的狀態中。

請注意,如果您正在做一些需要嚴格遵循滾動位置的重型動畫(例如動畫標頭或視差圖像),那麼對Animated.event使用本機驅動程序將是一個好主意。你可以在React Native's blog上了解更多。

+0

非常感謝您的幫助:-) –