Je voudrais rendre un UILabel cliquable.
J'ai essayé ceci, mais cela ne fonctionne pas:
class DetailViewController: UIViewController {
@IBOutlet weak var tripDetails: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
...
let tap = UITapGestureRecognizer(target: self, action: Selector("tapFunction:"))
tripDetails.addGestureRecognizer(tap)
}
func tapFunction(sender:UITapGestureRecognizer) {
print("tap working")
}
}
ios
swift
uilabel
uitapgesturerecognizer
Daniele B
la source
la source
UILabel
? Êtes-vous sûr de toucher dans le cadre de l'étiquette? Avez-vous uneUIViews
couverture de l'étiquette? Est-iluserInteractionEnabled
défini surTrue
pour l'étiquette?Réponses:
Avez - vous essayé de mettre
isUserInteractionEnabled
àtrue
sur l'tripDetails
étiquette? Cela devrait fonctionner.la source
Mise à jour Swift 3
Remplacer
avec
Exemple:
la source
@objc
.Mise à jour SWIFT 4
la source
Mise à jour Swift 3
la source
Swift 5
Similaire à @liorco, mais doit remplacer @objc par @IBAction .
Cela fonctionne sur Xcode 10.2.
la source
@IBAction
n'est nécessaire que pour exposer la méthode à l'Interface Builder de Xcode (d'où IB). Il agit également comme@objc
mais si vous ajoutez les gestes ou d'autres actions avec du code, vous devez utiliser l'@objc
annotationSolution bonne et pratique:
Dans votre ViewController:
Vous pouvez le placer dans votre ViewController ou dans un autre fichier .swift (par exemple CustomView.swift):
Dans Storyboard, sélectionnez Label et sur le volet de droite dans "Identity Inspector" dans la classe de champ, sélectionnez LabelButton.
N'oubliez pas d'activer dans l'inspecteur d'attributs d'étiquette "Interaction utilisateur activée"
la source
Vous devez activer l'interaction utilisateur de cette étiquette .....
Pour par exemple
yourLabel.userInteractionEnabled = true
la source
Pour swift 3.0, vous pouvez également modifier la durée de la pression longue du geste
la source
Assez facile à ignorer comme je l'ai fait, mais n'oubliez pas d'utiliser
UITapGestureRecognizer
plutôt queUIGestureRecognizer
.la source
Comme décrit dans la solution ci-dessus, vous devez d'abord activer l'interaction de l'utilisateur et ajouter le geste de toucher
ce code a été testé avec
Swift4 - Xcode 9.2
la source
Cannot invoke initializer for type 'UITapGestureRecognizer' with an argument list of type '(() -> Void)'
quand j'essaye ça.