2012-01-20 1 views
0

私のスクロールビュー(デフォルトのものの上に1つ)にピンチジェスチャ認識機能が添付されています。私はそれを有効にしようとしていると特定のズームレベルで無効にするが、それは動作していません。setEnabledを使用してUIPinchGestureRecognizerを無効にする:NO

[self.pinchGesture setEnabled:NO]; 
and 
[self.pinchGesture setEnabled:YES]; 

ピンチジェスチャーを有効または無効にするには、次のコマンドを使用します。私はそれをデバッグしようとしていると私は私のジェスチャーの説明をプリントアウトするために、このコードを使用します。

NSArray *gestures = [self.scrollView gestureRecognizers]; 
for (UIGestureRecognizer *gesture in gestures) { 
    NSLog(@"%s, gesture: %@", __FUNCTION__, [gesture description]); 
} 

私は私のカスタムジェスチャーのためにそれがどのように見えることを確認:それはあるにもかかわらず、そう

gesture: <UIPinchGestureRecognizer: 0x88a62d0; state = Possible; enabled = NO; view = <UIScrollView 0x880c360>; target= <(action=handlePinch 

enabled = NOに設定すると、pinchはhandlePinch:メソッドを呼び出します。これには理由がありますか?または、ピンチジェスチャーを削除するには[self.scrollView setGestureRecognizers:<#(NSArray *)#>を使用する必要がありますか?私がこのアプローチを使用する場合、スクロールビューのジェスチャーをループする必要がありますか?それらの参照を保存しないと、カスタムピンチジェスチャーが戻されません。ありがとう。

+0

スクロールビュー自体を有効/無効にしていますか? – Costique

+0

@Costiqueああ申し訳ありませんが、私は自分のコードを見ていないし、考えていない、私はコードスニペットを修正しました。 – Crystal

答えて

0

有効になっているスクロールビューは次のようになります。スクロールビューを有効または無効にします。ジェスチャー認識ツールは、あなたのスクロールビューにラッチされたものですが、ほとんど独立した動作をする別の動物です。無効にするのではなく、ジェスチャーのターゲットを削除してから、有効にするときにターゲットを追加してみましょう。または、ブール値がYESの場合、ターゲットメソッドがチェックしてジェスチャを無視するブール値を設定します。

+0

アドバイスをいただきありがとうございます。私はそれが動作すると思ったが、私は両方のメソッド、removeTargetを試み、私のhandlePinch:メソッドがチェックし、私は望ましくない動作を取得するBOOLフラグを持っています。 scrollViewDidZoomのようなscrollView独自のデリゲートメソッドは呼び出されなくなりました。 handlePinch:メソッドが呼び出されると、BOOLをチェックして何もしません。そこからscrollViewDidZoomが呼び出されることはありません。それが呼び出されるために私のジェスチャーをどこかに渡す必要がありますか? – Crystal

+0

その場合は、ジェスチャ認識機能を完全に削除してから、もう一度それを追加したいときに追加します。 –