Fitzy Fitzy - 10 months ago 52
iOS Question

Sending arguments to gesture recognizer initialization selector?

In my program, I have a

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
like you would with
performSelector: withObject
. Is this popssible? It would make sense to allow you to send arguments to the
's selector. Any help is appreciated.

Answer Source

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;