Search code examples
iosiphoneuilabelinterface-buildertouch-event

Handling Touch Event in UILabel and hooking it up to an IBAction


Ok, so I have a UILabel created in interface builder that displays some some default text of "tap to begin".

When the user taps the UILabel I want it to trigger an IBAction method: -(IBAction)next; which updates the text on the label to say something new.
It would be really convenient if this allowed me to simply drag a connection from my method to my label and then select touch up inside, as with a button. but alas, no cigar.

so anyways, I guess my question is, am I going to have to subclass UILabel to get this to work? Or is there some way I can drag a button over the label, but make it 0% opaque. Or is there a simpler solution I'm missing?


Solution

  • Check it out:

    UILabel *label = ...
    label.userInteractionEnabled = YES;
    UITapGestureRecognizer *tapGesture =
          [[UITapGestureRecognizer alloc] initWithTarget:self 
                                                  action:@selector(labelTap)];
    [label addGestureRecognizer:tapGesture];
    

    The trick is to enable user interaction.