2

いくつかのクラスがあり、UIGestureRecognizerをそれらのUIImageViewに追加したいと思います。

すべてのクラスに正しく追加します。各クラスが同じレコグナイザーを追加するように、コードを複製します。これらはローカル認識機能です

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleSingleTap:)];
[singleTap setNumberOfTapsRequired:1];
[background addGestureRecognizer:singleTap];
[singleTap release];

したがって、各クラスで引き続き機能するはずです。

問題は、それがファーストクラスでのみ機能し、他のクラスでは機能しないことです。

背景はUIImageViewであり、すべてのクラスに存在します。だから私は複数の背景を持っています。

新しいModelViewControllerクラスをそれぞれ提示しますが、これが問題なのかもしれません。

私は次のようにレコグナイザーを使用します

- (void) handleSingleTap : (UIGestureRecognizer*) sender
{
      //do whatever
}

各クラスは、

@interface Someclass : UIViewController <UIGestureRecognizerDelegate>

なぜそれが機能しないのかわかりません。各handleSingleTapメソッドに出力があります。何も印刷されません。

4

1 に答える 1

9

まず、同じレコグナイザーオブジェクトを異なるビューに 追加していますか?もしそうなら、それはうまくいきません。UIGestureRecognizerオブジェクトは、1つのビューでのみジェスチャを検出/追跡します。したがって、次のように、ビューごとに異なる認識オブジェクトがあることを確認してください。

UITapGestureRecognizer *r1 = [UITapGestureRecognizer alloc] initWithTarget:self action:...];
[view1 addGestureRecognizer:r1];
[r1 release];

UITapGestureRecognizer *r2 = [UITapGestureRecognizer alloc] initWithTarget:self action:...];
[view2 addGestureRecognizer:r2];
[r2 release];

...

次に、ビュー(この場合はUIImageView)が[uiimageview setUserInteractionEnabled:YES];

3番目単純なタッチを検出しているだけの場合は、UIGestureRecognizerDelegateプロトコルを採用する必要がないため、@interfaceからそのプロトコルを削除するだけです。

それが役に立てば幸い

于 2011-01-09T06:00:20.300 に答える