Ich versuche, einen benutzerdefinierten vertikalen Schieberegler in React Native
zu implementieren. Zu diesem Zweck benutze ich PanResponder
. Da der Schieberegler vertikal ist, ändere ich nur den y
-Wert. Um das Objekt an den Grenzen des Sliders zu stoppen, überprüfe ich, ob es irgendwelche erreicht hat, bevor ich Animated.event
anrufe.
Mein Schieberegler funktioniert einwandfrei, bis ich das Objekt sehr schnell wische. Dann scheint onPanResponderMove
callback zu selten aufgerufen zu werden und das Objekt stoppt außerhalb der Spur weiter als die Grenze.
Was mache ich falsch? Ist meine Vorgehensweise korrekt ( Animated.event
wenn außerhalb des Sliders)?
UPDATE:
Wahrscheinlich ist das Problem, dass Sie die Bewegung von PanResponder
nicht sofort während der Geste stoppen können, wie in beschrieben GitHub-Problem .
Anstatt zu versuchen, PanResponder
daran zu hindern, den pan.y
-Wert zu aktualisieren, könnte der Verbraucher des pan
-Werts stattdessen einen interpolated
-Wert verwenden. Wenn sich die Rahmen beispielsweise in 10
und 250
befinden, verwenden Sie möglicherweise Folgendes:
In der Methode Release
müssten Sie die Werte auch innerhalb der Grenzen eingrenzen, aber die Interpolation verhindert, dass die Animation zu weit geht.
Tags und Links javascript android ios typescript react-native