Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making UILabel touchable

I have a UILabel and I would like to make it react to a touch. I tried putting a button on top of the label, thanks to this I could interact with the button. However, the button cannot be fully transparent, right? I could set an alpha of the button to 0,02, but it is still visible on by background. How to solve this? Maybe I could set the properties in some other way to make them fully invisible? Or is there some other solution?

like image 848
Jakub Avatar asked Mar 05 '11 19:03

Jakub


3 Answers

First, why not just use a button and set the button title to the label's contents?

If you can't/don't want to do that, you can also set userInteractionEnabled = YES on the label and then add a gesture recognizer to the label.

like image 62
Ole Begemann Avatar answered Oct 01 '22 20:10

Ole Begemann


In Swift:

label.userInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelPressed"))
label.addGestureRecognizer(gestureRecognizer)

Get your click in Action :

func labelPressed(){
    print("Label pressed")
    //Your awesome code.
}
like image 38
vkalit Avatar answered Oct 01 '22 20:10

vkalit


I usually do this:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pushAction)];
[myLabel addGestureRecognizer:tap];

I don't know if it works with labels, but then i just make a transparent UIView with the same rect and put it on top.


Okay, i checked, it only works in UIView, but then, do this:

UIView *tapView = [[UIView alloc] initWithFrame:myButton.frame];

And put "tapView" in the addGestureRecognizer-method.

like image 37
Jensen2k Avatar answered Oct 01 '22 21:10

Jensen2k