5

重複の可能性:
UIScrollView の方向ロックを有効にするにはどうすればよいですか?

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

言い換えれば、水平方向にスクロールするときはスクロールビューをページ境界にスナップし、垂直方向にスクロールするときは自由にスワイプできるようにしたいと考えています。

もちろん、簡単な解決策は、各方向に 1 つずつ、2 つの UIScrollView を使用することですが、私の場合、これは実行可能な解決策ではありません。

4

1 に答える 1

6

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

  1. directionalLockEnabled = YES に設定します。
  2. タッチを転送する別のビューで UIScrollView をラップします (スクロールビューのフレームを変更するため)
  3. UIScrollView のフレームの高さを 1 に設定します (水平スクロールを処理する際の垂直方向のスナップを最小限に抑えるため)。
  4. 現在のスワイプの方向を検出する ( scrollViewDidScroll:)
  5. contentOffset の x が変更された場合は、pagingEnabled = YES に設定します。
  6. contentOffset の y のみが変更された場合は、pagingEnabled = NO を設定します。

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

于 2012-05-07T09:57:35.233 に答える