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)