2

UIGestureRecognizersを使用して、hitTest:withEvent、pointInside:withEvent:などを使用して、ここで他のすべての同様のトピックを探してきましたが、達成する必要があることには何も問題がないようです。

基本的に、メインビュー(一般的なUIViewControllerのself.view)と、下部に小さな長方形のUIScrollViewがアタッチされています。scrollViewはいくつかのUIImageViewで埋められており、ユーザーは通常どおりスクロールできます。

ただし、ユーザーは1つのUIImageView(またはそのコピー)をUIScrollViewからメインビューにドラッグできる必要があります。これは、同じドラッグジェスチャを使用して非常に難しいと感じているため、次の方法が必要です。

1)通常のUIScrollViewで処理する必要がある通常の水平スクロールジェスチャと、画像ビュー上でのドラッグジェスチャを区別します。

2)ドラッグジェスチャが識別されたら、タッチをスーパービューに伝播する必要があります。スーパービューはUIImageViewのコピーをホストし、同じドラッグジェスチャを使用して、UIScrollViewの境界外でもメインビュー上でドラッグを続行します。

UIScrollViewにuserInteractionEnabled=NOがある場合、タッチはサブビューに伝播されますが、1)サブビューではなくスーパービューに伝播したい、2)userInteractionEnabledプロパティは、最初のジェスチャが単一のドラッグジェスチャを使用する必要がありますが、終了しました。

助けてくれてありがとう。

4

1 に答える 1

2

したがって、これまでのところtouchesShouldBegin:withEvent:inContentView:、UIScrollViewサブクラスのメソッドを実装することにdelayContentTouchesなりましたが、@ nhahtdhが示唆していたように、NOではなくYES(デフォルト)に設定されています。

不思議なことに、メソッドを実装するだけでサブビューがドラッグをインターセプトするのに十分でしたが、それでもスクロールビューは正しくスクロールしていますが、delayContentTouchesをNOに設定すると、すべてのサブビューが動き始めたため、スクロールできませんでした。

本当にこれのクレジットは@nhahtdhです、それで、あなたが答えを投稿するならば、私はそれを受け入れます、あなたの助けに感謝します。

于 2012-11-25T18:57:10.120 に答える