2011-10-24 15 views
0

ビューがあり、タブ後にユーザが描画できるようにしたい場合UIPanGestureRecognizerを使用して、UIPanGestureRecognizerを追加します。UIButtonタッチ後にこのビューが表示されますどのように私は私の図面を完了し、UIButtonを再タッチした後、これを削除することができますUIPanGestureRecognizer ??UIPanGestureRecognizerをビューに追加した後に削除する

答えて

2

UIViewのは、あなたが方法あなたがのために複数のパンジェスチャー認識機能を持っている場合は

- (void)removeTarget:(id)target action:(SEL)action 
+0

しかし、オブジェクトに認識機能があるかどうかを検出できますか? とどこからremoveTargetを呼び出すことができますか? –

+0

UIViewに関連付けられている認識機能は、gestureRecognizersプロパティを使用して取得できます。無効にするUIGestureRecognizerで、削除ターゲットを呼び出すことができます。 – jbat100

+0

しかし、多くのレコグナイザーがあれば、どのようにして特定のものをgestureRecognizersから得ることができますか? –

0
UIPanGestureRecognizer gestureRecognizer.cancelsTouchesInView = NO; 
0

を使用して、そのコールバックを削除することで、一時的にUIGestureRecognizerを無効にすることができ、

- (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 

代わりと呼ばれる方法があります関連するオブジェクトで特定のタグをタグ付けすることができます。あなたはUIPanGestureRecognizerビューに追加するには、右の前に

What is objc_setAssociatedObject() and in what cases should it be used?

だからあなたの.mファイルの先頭に、あなたがして

static char overviewKey; 

を置くところ、あなたは文字列でそれをタグ付けしたいです。あなたが UIPanGestureRecognizerを削除したい場合は

objc_setAssociatedObject(panGesture, &overviewKey, @"pan gesture for drawing", OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

[someView addGestureRecognizer:panGesture]; 

することは、あなたは、そのビュー内のすべてのジェスチャー認識装置を通過した文字列と1を見つけ、それを削除したいです。

for (UIGestureRecognizer *gesture in someView) { 

    NSString *gestureTag= objc_getAssociatedObject(gesture, &overviewKey); 


    if (gestureTag==nil) { 

    continue; 

    } 

    if ([gestureTag isEqual:@"pan gesture for drawing"]) { 

    [ someView removeGestureRecognizer:gesture ]; 

    } 
} 
関連する問題