2012-02-16 13 views
1

私はそれを簡単に保ちます。UIScrollview、レスポンダチェーンを下に移動

私は約10枚の画像が添付されたUIScrollviewを持っています。私は現在、画像をタッチしてスクロールビューでドラッグできるようにしています。

サブクラスUIImageviewを作成し、touchesMovedなどを実装することでこれを行いました。私はまだビューをスクロールすることはできますが、イメージをあまりにも速くドラッグしようとすると問題が発生します。 UIImageクラスでは、ビューがスクロールされてからtouchesMovedが発生するかどうかを最初に確認するようです。

これは、画像をタッチすると最初のチェックが行われるようにして、スクロールビューにレスポンスを渡さないように切り替えることができますか。

助けがあれば助かります。ありがとう。

答えて

1

これを行う最も簡単な方法は、1本の指で画像を移動し、2本の指でスクロールする方法です。

あなたはiOSの5にしている場合、これは超簡単です:

self.scrollView.panGestureRecognizer.minimumNumberOfTouches = 2; 

あなたがiOS版の古いバージョンをサポートしたい場合は、あなたが少しより多くの仕事をしなければならない。

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers){ 
    if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){ 
    ((UIPanGestureRecognizer *)gesture).minimumNumberOfTouches = 2; 
    } 
} 

両方にワンタッチジェスチャーを使用する場合は、いくつかの方法があります。各画像ビューにUIPanGestureRecognizerを添付することができます。 requireGestureRecognizerToFail:メッセージを使用して、スクロールビュー自身のUIPanGestureRecognizerに画像表示認識プログラムを遅らせるように指示する必要があります。

もう1つの方法は、スクロールビューのUIPanGestureRecognizerの代理人を、gestureRecognizer:shouldReceiveTouch:メソッドを実装して作成したオブジェクトに設定することです。このメソッドでは、タッチのビューがイメージビューの1つであるかどうかを確認できます。その場合は、NOを返して、スクロールビューのパンジェスチャ認識機能がアクティブにならないようにします。

+0

ありがとう、これは完璧に動作します! –

0

あなたの質問はちょっと混乱しますが、私は、UIScrollViewにその中にドラッグしたい10個のUIImageViewsがあると仮定します。

ドラッグの動作を実装するために、すべてのUIIImageViewにジェスチャ認識機能(UIPanGestureRecognizer)を使用することをお勧めします。私はジェスチャーレコグナイザーがこの種の行動に対してもっと堅実なアプローチであると感じています。

ジェスチャ認識機能を使用する方法がわからない場合は、どのようなタイプのUIViewをどのようにドラッグすることができるかを示す短いコード例を投稿できます。ただコメントに尋ねれば、私はそれを書くでしょう。

関連する問題