2017-08-07 1 views
0

Ich möchte ein Karussell erstellen, das automatisch scrollt, bis der Benutzer ScrollView selbst scrollt/berührt.React Native: ScrollView mit automatischem Scroll

Das automatische Scrollen selbst funktioniert gut mit scrollView.scrollTo aber wie könnte ich erkennen, wenn der Benutzer mit der ScrollView interagiert? Ich schaute auf das Ereignis onScroll, aber dies scheint nicht zwischen einem benutzergenerierten Ereignis und einem Ereignis zu unterscheiden, das durch den Aufruf von scrollTo generiert wurde.

Ich würde auch gerne wissen, ob es möglich ist, die aktuelle Bildlaufposition von der ScrollView direkt zu erhalten, anstatt sie jedes Mal vom onScroll Ereignis zu lesen.

Ich bin sehr dankbar für alle Tipps und Anregungen.

Antwort

2

Durch das Graben in ScrollView's source code können Sie einige undokumentierte Rückrufe bemerken, die Ihnen helfen werden, das zu erreichen, wonach Sie suchen, nämlich onTouchStart und onTouchEnd. Diese beiden Rückrufe werden nur ausgelöst, wenn der Benutzer mit der ScrollView interagiert und nicht beim programmgesteuerten Scrollen.

Wahrscheinlich möchten Sie das automatische Bildlaufintervall unter onTouchStart löschen und nach einer Verzögerung unter onTouchEnd neu starten.

In Bezug auf Ihre nächste Frage ist die Antwort nein. So weit ich weiß, ist derzeit kein Getter verfügbar, um die aktuelle Bildlaufposition abzurufen. Daher müssen Sie sich auf das Ereignis verlassen, das an onScroll übergeben wurde, rufen Sie ab, und speichern Sie es in dem Zustand Ihrer Komponente.

Beachten Sie, dass es eine gute Idee ist, den systemeigenen Treiber für Animated.event zu verwenden, wenn Sie einige schwere Animationen ausführen, die der Bildlaufposition genau folgen müssen (z. B. animierte Kopf- oder Parallaxenbilder). Sie können mehr darüber auf React Native's blog erfahren.

+0

Vielen Dank für Ihre Hilfe :-) –

Verwandte Themen