Swift: comment rendre un UILabel cliquable?

Je voudrais rendre un UILabel cliquable.

J'ai essayé cela, mais ça ne marche pas:

class DetailViewController: UIViewController { @IBOutlet weak var sortingpDetails: UILabel! override func viewDidLoad() { super.viewDidLoad() ... let tap = UITapGestureRecognizer(target: self, action: Selector("tapFunction:")) sortingpDetails.addGestureRecognizer(tap) } func tapFunction(sender:UITapGestureRecognizer) { print("tap working") } } 

Avez-vous essayé de définir userInteractionEnabled sur true sur l'label sortingpDetails ? Cela devrait fonctionner.

Mise à jour de Swift 3

Remplacer

 Selector("tapFunction:") 

avec

 #selector(DetailViewController.tapFunction) 

Exemple:

 class DetailViewController: UIViewController { @IBOutlet weak var sortingpDetails: UILabel! override func viewDidLoad() { super.viewDidLoad() ... let tap = UITapGestureRecognizer(target: self, action: #selector(DetailViewController.tapFunction)) sortingpDetails.isUserInteractionEnabled = true sortingpDetails.addGestureRecognizer(tap) } func tapFunction(sender:UITapGestureRecognizer) { print("tap working") } } 

Mise à jour de Swift 3

 yourLabel.isUserInteractionEnabled = true 

Mise à jour SWIFT 4.0

  @IBOutlet weak var sortingpDetails: UILabel! override func viewDidLoad() { super.viewDidLoad() let tap = UITapGestureRecognizer(target: self, action: #selector(GameViewController.tapFunction)) sortingpDetails.isUserInteractionEnabled = true sortingpDetails.addGestureRecognizer(tap) } @objc func tapFunction(sender:UITapGestureRecognizer) { print("tap working") } 

Vous devez activer l'interaction de l'user de cette label …..

Pour par exemple

yourLabel.userInteractionEnabled = true

Pour swift 3.0 Vous pouvez également changer de durée de pression longue

 label.isUserInteractionEnabled = true let longPress:UILongPressGestureRecognizer = UILongPressGestureRecognizer.init(target: self, action: #selector(userDragged(gesture:))) longPress.minimumPressDuration = 0.2 label.addGestureRecognizer(longPress)