3

これと同様の質問がすでに多く寄せられていることは承知していますが、すべて試してみましたが、問題が解決しない場合は質問を投稿します。最初に試した質問は次のとおりです。

1) longPressGestureRecognizer 経由で button.tag を取得するには?

2) UIButton 長押しイベント

私のアプリケーションUIButtonsでは、xib に 12 個あります。長押しするUIButtonと、このメソッドが呼び出されます。プロパティを使用gesture.view.tagすると、異なる をクリックするたびに常に同じタグ(つまり)が表示されますUIButtons

- (IBAction)longPress:(id)sender {

     UILongPressGestureRecognizer* gesture=(UILongPressGestureRecognizer*)sender;
     NSLog(@"Tag---> %d",gesture.view.tag);
  }

私のxibは次のようになります。

ここに画像の説明を入力

更新 1:

誰かが xib と混同する前に、UIButtonsカスタム タイプに設定されているため、UIImageView.

4

1 に答える 1

7

は複数のビューを追跡できるように見えますが、UIGestureRecognizer複数のビューを追跡しているとは報告していません。したがって、viewa のプロパティを確認するUIGestureRecognizerと、認識エンジンが追加された最後のビューに設定されます。

ドキュメントから:

ジェスチャレコグナイザーは、特定のビューとそのビューのすべてのサブビューに対してヒット テストされたタッチで動作します。したがって、そのビューに関連付ける必要があります。その関連付けを行うには、UIView メソッド addGestureRecognizer: を呼び出す必要があります。ジェスチャ レコグナイザーは、ビューのレスポンダー チェーンに参加しません。

このシナリオの解決策は、認識が必要なビューごとにジェスチャ レコグナイザーを用意し、それらを同じデリゲート セレクターにリンクすることです。

注: この質問 (および私の回答) は、2013 年 3 月 20 日に NSChat チャット ルームで発生しました。今後の参考のためにここに投稿することにしました。

于 2013-03-20T13:23:22.337 に答える