1

別のものの中に入れ子になっていますがUIScrollView、どちらも水平です。

外側のものには複数の が含まれていますUIScrollViews。たとえば、(複数のページを持つドキュメントの) ページごとに 1 つです。内側にはUIView、画面に収まるだけの を含めるUIViewことも、スクロールする必要のあるより大きなものを含めることもできます (通常は水平方向ですが、ユーザーが画面をつまむと、両方向にスクロールできます)。

この問題は、ドキュメントをすばやくスクロールし、外側のスクロール ビューがそのサブビューをスクロールすることを決定し、内側のスクロール ビュー (contentSize が画面サイズより大きいもの) をまったくスクロールさせない場合に発生します。外側のスクロール ビューをそっとスクロールすると、代わりに内側のスクロール ビューもスクロールします。

望ましい動作は、外側のスクロール ビューをすばやくスクロールしても、コンテンツが完全に表示されるまで内側のスクロール ビューをスクロールしてから、外側のスクロール ビューをスクロールさせることです。

hitTest:withEvent:外側のスクロール ビューが現在表示されているUIScrollViewサブビューにスクロールするかどうかを尋ねるようにオーバーライドしようとしましたが、これは現在、前方にスクロールする場合にのみ機能します。問題は、 のスクロール方向を検出できないことhitTest:withEvent:です。そのため、このコードを別の場所に移動することも考えていますが、それが正しい方法かどうかはわかりません。

文中のすべての「スクロール」単語で申し訳ありませんが、これをより良い方法で説明する方法がわかりません

4

1 に答える 1

0

外側の scrollView がまだ動きをアニメートしている場合、内側の scrollView に処理させるのではなく、すべてのジェスチャを取得します。

外側のスクロール ビューの panGestureRecognizer が失敗するには、外側のスクロール ビューの panGestureRecognizer が必要になるように、gestureRecognizer の requireGestureRecognizerToFail: メソッドを使用してみてください。スクロールが少し遅く感じるかもしれません。それで問題が解決するかどうかはわかりませんが、試してみても問題ありません。

于 2013-07-08T12:25:07.697 に答える