2017-01-22 7 views
9

リアクションネイティブScrollViewには小道具pagingEnabledがあります。ただし、ScrollView内の各ページ(または子コンポーネント)の幅がScrollViewの幅と等しいとみなします。React Native ScrollViewでスクロール終了を検出すると、ページに貼り付けられます

ScrollViewよりも小さいページで正しく動作させるにはどうすればいいですか?

ユーザーがスクロールを停止したことを検出することは可能ですか?次に、適切なページにスナップするためのコードを簡単に記述できます。

編集:iOSでのみ利用できる小道具を使用してこれを修正するにはいくつかの方法があります。これはAndroidで特に問題です。

答えて

24

React Nativeに設定できる2つの異なる小道具ScrollViewは、そのスクロールが終了したことを通知するコールバックを取ります。 (彼らは、APIドキュメントに記載されている、私の知る限りでは、ありません。一つだけそれらの現在文書化されている理由を、私はよく分からない。)


onScrollEndDrag機能

ユーザーがScrollViewを離すとすぐに呼び出されます(画面から指を離す)。

ワーキングサンプル:ScrollViewは、(ユーザーが画面から指を持ち上げるた後にそれが正常に少しスライドさせていきます)スライドを停止したときに呼び出されhttps://rnplay.org/apps/Ufv6Cg


onMomentumScrollEnd function

ワーキングサンプル:https://rnplay.org/apps/BPgG_g


注:私はネイティブコンポーネントを反応させるのが、彼らは例のように動作する任意のためのAPIドキュメント内のメソッドを見つけることができませんでした。彼らはreact-native-snap-carouselhereを使っているのを見ました。

+2

も奇妙 'onScrollBeginDrag'は、ドラッグの開始時にトリガー別の一つですhttps://github.com/facebook/react-native/blob/62b20ce582383dd36c07b5d541cde6a7d13cabc6/React/Views/RCTScrollView.h#L54 – garrettmac

+3

を追加したいです十分なonScrollEndDragがネイティブAPIに反応してもそれ以上表示されませんが、まだ動作します。 – tibbus

+0

サンプルリンクは両方とも破損しており、Wayback Machineにも存在しません。 –

関連する問題