2017-11-29 10 views
0

iOSアプリケーション(iOS 11、Swift 4)には、ページングスクロールビューがあります。ユーザーが現在見ているページをトラッキングするには、scrollViewWillBeginDraggingscrollViewDidEndDragging、およびscrollViewDidEndDeceleratingのメソッドを使用しようとしています。ページングのページをスクロールするscrollView

しかし、これらは十分ではないようです。私は例を使用します。 scrollViewが2ページあり、ユーザが一番左のもの(インデックス0)を見ているとしましょう。

  • ユーザーは、単一のジェスチャーで、右スワイプした場合、すべてが素晴らしい作品が(beginDraggingが呼び出され、その後、ドラッグ終了と呼ばれ、最終的にendDeceleratingが呼び出されます)

  • ユーザーが左スワイプしようとした場合(ページがなくなったところ)、ユーザーがタッチを離すと、UIが「スナップバック」する必要があります。ここで問題となるのは、パラメータをtrueに設定してdidEndDraggingを呼び出したにもかかわらず、didEndDeceleratingが呼び出されないことです。そして、これは、私が現在見ているページの緩やかな軌跡になります。

ユーザーがスクロールを開始するタイミングとスクロールが停止するタイミングを知る必要があります。これを達成するためのより良い戦略はありますか?

ありがとうございます!

+0

私はscrollview _bounces_のプロパティを使用することができると思います –

答えて

0

scrollViewDidScrollデリゲートメソッドを使用すると、contentOffsetに基づいて、どのページが表示されているかを計算できます。また、UIScrollViewにはisDragging、isDeceleratingなどのプロパティがあり、それが役立ちます。

+0

こんにちは、あなたの返信のおかげで。 'didScrol'の問題は、何かがスクロールしている間に継続的に呼び出されるということです。そのため、scrollViewが最終的に新しいページにアライメントされているかどうかは常に計算する必要がありますが、これは悪い習慣と思われます。 移動が停止するたびに呼び出されるメソッドを使用することをお勧めします。 – AmiguelS

関連する問題