2012-05-07 10 views
3

可能性の重複:
UIScrollViewのページング

How do I enable directional lock for a UIScrollView?

UIScrollViewのは、例えば、ページングを実行させる方法はあります垂直方向にスクロールするときに水平ではなく、

つまり、水平方向にスクロールし、垂直方向にスクロールするときに、スクロールビューをページ境界にスナップする必要があります。

もちろん、簡単な解決策は2つのUIScrollViewを使用していますが、それぞれの方向に1つですが、これは私の場合には実現可能な解決策ではありません。

+0

はい、可能です。 http://stackoverflow.com/questions/861986/how-do-i-enable-directional-lock-for-a-uiscrollview –

+0

これは特定の方向へのスクロールを防ぐだけです。私はすべての方向にスクロールできるようにしたいが、水平方向にのみスナップから境界線を実行する – user1204271

+0

@casperoneこれは、マークされた質問の複製であるかどうかわかりません。これはページングに関するものです。他の1つは指向性ロックです。 –

答えて

5

水平方向の動きがある場合は常にスナップし、水平方向のオフセットが変更されていない場合のみ自由なスクロールが必要な場合を想定します。

  1. タッチを転送する別の図でUIScrollViewの(我々はscrollviewのfram`eを修正するように)
  2. 1にUIScrollViewののフレームの高さを設定しdirectionalLockEnabledセット= YES
  3. ラップ(垂直スナップを最小化するために水平スクロール)を取り扱う際contentOffsetのXが変更された場合

  4. scrollViewDidScroll:に電流スワイプの方向を検出し、pagingEnabled = YES
  5. を設定します10
  6. contentOffsetのyだけが変更されている場合は、pagingEnabled = NOを設定してください。

これは、必要なシナリオをシミュレートします。水平にスワイプすると、ページがスナップし、高さが1に設定されているため、垂直スナップは最小になります。
スクロールを垂直方向にスクロールすると、スクロールビューが自由にスクロールします。

関連する問題