48

タグを使用して識別する一連のイメージビューがあります。画像にシングル タップ ジェスチャを追加しました。

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
[tableGridImage addGestureRecognizer:singleTap];
tableGridImage.userInteractionEnabled = YES;
[singleTap release];

これにより、selectImage セレクターを正常に呼び出すことができますが、ジェスチャは送信者として渡されます。タグを取得できるように、送信者としてイメージビューが必要です。

イメージビューとそのタグを取得する方法についてのアイデアはありますか?

4

4 に答える 4

54

タグを取得する方法を見つけました。これは、私にとって質問の最も重要な部分でした。ジェスチャは送信者であるため、ジェスチャが添付されているビューが一緒に送信されることがわかりました。

[(UIGestureRecognizer *)sender view].tag

UITapGestureRecognizerセレクターを介して引数を送信する方法を誰かが教えてくれるかどうか、私はまだ興味があります。

于 2011-05-22T02:13:07.823 に答える
28

UITapGestureRecognizer セレクターを介して送信できる唯一の引数は、次のように UITapGestureRecognizer 自体です。

前に行ったように、必ずセレクター名の後に「: 」を付けてください。

UITapGestureRecognizer *singleTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];

次に、パラメーターを selectImage に追加して、次のようにビューを取得できるようにします。

-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{

    //Get the View
    UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view;
}
于 2012-07-11T09:40:51.490 に答える
4

@ dysan819の回答から、タグなしでオブジェクトを取得できました。私の場合はUILabel.

- (void)labelTap:(id)sender {
    NSLog(@"tap class: %@", [[(UIGestureRecognizer *)sender view] class]);
    if ([[(UIGestureRecognizer *)sender view] isKindOfClass:[UILabel class]]) {
        UILabel *lb = (UILabel*)[(UIGestureRecognizer *)sender view];
        NSLog(@"tap: %@", lb.text);
    }
}
于 2015-09-09T03:07:05.297 に答える
2

ハンドラーに個別の機能が必要な場合は、特に BlocksKit プロジェクトとこのファイルを確認してください。このプロジェクトはCocoaPodsプロジェクトであるため、ツールチェーンに簡単にインストールできます。

最初に参照されたコード ファイルの例:

UITapGestureRecognizer *singleTap = [UITapGestureRecognizer recognizerWithHandler:^(id sender) {
     NSLog(@"Single tap.");
 } delay:0.18];
 [self addGestureRecognizer:singleTap];

これにより、各画像に対してジェスチャ認識機能を簡単にセットアップできるようになります。

于 2012-10-05T13:52:03.623 に答える