UITapGestureRecognizer selector, sender is the gesture, not the ui object UITapGestureRecognizer selector, sender is the gesture, not the ui object ios ios

UITapGestureRecognizer selector, sender is the gesture, not the ui object


I figured out how to get the tag, which was the most important part of the question for me. Since the gesture is the sender, I figured out the the view it is attached to is sent along with it:

[(UIGestureRecognizer *)sender view].tag

I am still curious if anyone can tell me how to send an argument through a UITapGestureRecognizer selector.


The only argument you can send through UITapGestureRecognizer selector is the UITapGestureRecognizer itself as following:

Make sure to put ":" after the selector name like you previously did :

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

Then add a parameter to selectImage so you can retrieve the View as following:

-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{    //Get the View    UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view;}


From @dysan819 answer, I manage to get object without tag. In my case is 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);    }}