In my program, I have a UITapGestureRecognizer
which I have initialized with initWithTarget: action:
. I have passed in a selector to call a method by the name of PlanetTapped: (UIImageView *)aPlanet
. This calls the method fine, however I would like to know how to pass arguments into action:
like you would with performSelector: withObject
. Is this popssible? It would make sense to allow you to send arguments to the UIGestureRecognizer
's selector. Any help is appreciated.
The correct signature for the method to call would be:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer
then you could access the view that received the gesture by calling:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer {
UIImageView* aPlanet = gestureRecognizer.view;
...
}
Indeed, this is what UIGestureRecognizer reference states:
A gesture recognizer has one or more target-action pairs associated with it. If there are multiple target-action pairs, they are discrete, and not cumulative. Recognition of a gesture results in the dispatch of an action message to a target for each of those pairs. The action methods invoked must conform to one of the following signatures:
- (void)handleGesture;
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer;
- (void)viewDidLoad
{
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressOnPhotos:)];
[yourView addGestureRecognizer:longPressRecognizer];
}
- (IBAction)handleLongPressOnPhotos:(UILongPressGestureRecognizer *)sender{
// use "sender.view" to get the "yourView" you have long pressed
}
hope these would help you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With