タグを使用して識別する一連の画像ビューがあります。シングルタップジェスチャを画像に追加しました。
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
[tableGridImage addGestureRecognizer:singleTap];
tableGridImage.userInteractionEnabled = YES;
[singleTap release];
これにより、selectImageセレクターは正常に呼び出されますが、ジェスチャは送信者として渡されます。タグを取得できるように、送信者としてimageviewが必要です。
Imageviewとタグの取得方法に関するアイデアはありますか?
タグを取得する方法を見つけました。これは私にとって質問の最も重要な部分でした。ジェスチャは送信者であるため、添付されているビューが一緒に送信されることがわかりました。
[(UIGestureRecognizer *)sender view].tag
UITapGestureRecognizerセレクターを介して引数を送信する方法を誰かが教えてくれたら、私はまだ興味があります。
UITapGestureRecognizerセレクターを介して送信できる引数は、次のようなUITapGestureRecognizer自体のみです。
以前と同じように、セレクター名の後に「:」を忘れないでください:
UITapGestureRecognizer *singleTap =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
次に、selectImageにパラメーターを追加して、次のようにビューを取得できるようにします。
-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{
//Get the View
UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view;
}
@ 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);
}
}
ハンドラーに個別の機能が必要な場合は、BlocksKitプロジェクトと、特に this ファイルを確認してください。プロジェクトは CocoaPods プロジェクトであるため、ツールチェーンに簡単にインストールできます。
最初に参照されるコードファイルの例:
UITapGestureRecognizer *singleTap = [UITapGestureRecognizer recognizerWithHandler:^(id sender) {
NSLog(@"Single tap.");
} delay:0.18];
[self addGestureRecognizer:singleTap];
これにより、効果的に各画像のジェスチャ認識機能を簡単に設定できます。