49

私はプログラミングとObjective Cにまったく慣れていません。空白の画面と1分間のタイマーを持つアプリを作成する方法を知りたいと思っていました。できるだけ速く、できるだけ長くタップすることを意図しています。UITapGestureRecognizerを自分のコードに実装する方法を考えていました。

4

5 に答える 5

102

これは、クラスにジェスチャ認識エンジンを実装する方法に関する段階的なガイドです。

  1. クラスをUIGestureRecognizerDelegateプロトコルに準拠させます。

  2. ジェスチャ レコグナイザをインスタンス化します。たとえば、 a をインスタンス化するには、次のUITapGestureRecognizerようにします。

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
    

    ここで、action はジェスチャーを処理するセレクターです。ここで、セレクターの handleTapFrom は次のようになります。

    - (void) handleTapFrom: (UITapGestureRecognizer *)recognizer
    {
        //Code to handle the gesture
    }
    

    セレクターへの引数は、ジェスチャ レコグナイザーです。このジェスチャ認識エンジンを使用して、そのプロパティにアクセスできます。たとえば、、、などのジェスチャ認識エンジンの状態を見つけることができUIGestureRecognizerStateBeganますUIGestureRecognizerStateEnded

  3. インスタンス化されたジェスチャ レコグナイザで必要なプロパティを設定します。たとえば、 の場合UITapGestureRecognizer、プロパティnumberOfTapsRequired、およびを設定できnumberOfTouchesRequiredます。

  4. ジェスチャを検出するビューにジェスチャ レコグナイザーを追加します。サンプル コード (参照用にそのコードを共有します) では、次のコード行を使用してジェスチャ レコグナイザーを imageView に追加します。

    [self.imageView addGestureRecognizer:tapGestureRecognizer];
    
  5. ジェスチャ レコグナイザをビューに追加した後、ジェスチャ レコグナイザのデリゲート、つまりすべてのジェスチャ レコグナイザを処理するクラスを設定します。サンプル コードでは、次のようになります。

    tapGestureRecognizer.delegate = self;
    

    注:ジェスチャ レコグナイザーをビューに追加した後、デリゲートを割り当てます。それ以外の場合、アクション メソッドは呼び出されません。

于 2012-07-06T04:08:42.620 に答える
16
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tableView addGestureRecognizer:gestureRecognizer];
self.tableView.userInteractionEnabled = YES;
gestureRecognizer.cancelsTouchesInView = NO;  // this prevents the gesture recognizers to 'block' touches
于 2013-12-13T09:11:12.110 に答える