I have multiple views defined in my main view. I want to add single tap gesture to all these views. Below is the code I have written, but this registers a tap gesture to the last view that I add. So in the code below, tap is registered only for messagesView & not for other views. I have 2 questions:
-
How do I register the same tapGesture to multiple Views?
-
Lets assume I get this working, now all single taps from these views goto the same function called
oneTap. In this function how do I distinguish from which view the tap is coming?
Code:
@synthesize feedsView, peopleView, messagesView, photosView;
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[feedsView addGestureRecognizer:singleTap];
[peopleView addGestureRecognizer:singleTap];
[messagesView addGestureRecognizer:singleTap];
//[photosView addGestureRecognizer:singleTap];
[singleTap release];
return;
}
I had the same problem where it only added to the last view. There might be a better solution, but I just created a tag gesture for each view and linked them to the same selector method (
oneTap:in your case). In order to distinguish which view activated the method, you can just tag your views,feedsView.tag = 0; peopleView.tag = 1;and so on. Then when the method is called: