2017-01-22 13 views
9

React Native ScrollView ma prop pagingEnabled. Zakłada się jednak, że szerokość każdej strony (lub elementu potomnego) w ScrollView jest równa szerokości ScrollView.Wykryj koniec przewijania w React Native ScrollView, przystaw do strony

W jaki sposób możemy naprawić to, aby działało poprawnie dla stron, które są mniejsze niż ScrollView?

Czy można wykryć, kiedy użytkownik przestaje przewijać? Następnie możemy łatwo napisać nasz własny kod, aby przyciągnąć do właściwej strony.

Edytuj: Istnieje kilka innych sposobów na naprawienie tego za pomocą rekwizytów dostępnych tylko w systemie iOS, więc jest to szczególnie problem na Androidzie.

Odpowiedz

24

Istnieją dwa różne rekwizyty, które można ustawić na React Native ScrollView, który oddzwoni, aby powiadomić o zakończeniu przewijania. ( one nie są, o ile mi wiadomo, wymienione w dokumentacji API, nie jestem pewien dlaczego. Tylko jeden z nich jest obecnie nieudokumentowana.)


onScrollEndDrag funkcja

Wywoływany, gdy użytkownik puści ScrollView (podnosi palec z ekranu).

próbki robocze: https://rnplay.org/apps/Ufv6Cg


onMomentumScrollEnd function

nazwie gdy Scrollview przestaje przesuwnych (to zazwyczaj nadal przesuwać się trochę, gdy użytkownik podniósł palcem na ekranie).

próbka robocza: https://rnplay.org/apps/BPgG_g


Uwaga: nie mogę znaleźć metody w dokumentacji API dla dowolnego React Native komponent, ale działają jak pokazano w przykładach. Widziałem je używane here w react-native-snap-carousel.

+2

chciał również dodać 'onScrollBeginDrag' jest jeszcze jeden, który wyzwala na początku drag https://github.com/facebook/react-native/blob/62b20ce582383dd36c07b5d541cde6a7d13cabc6/React/Views/RCTScrollView.h#L54 – garrettmac

+3

dziwnie Wystąpił problem z właściwością onScrollEndDrag na zasadzie reagowania na natywny interfejs API, ale nadal działa. – tibbus

+0

Oba przykładowe dowiązania są zepsute, ale nie znajdują się również w Wayback Machine. –

Powiązane problemy