J'ai découvert que je peux créer UILabel beaucoup plus rapidement que UITextField et je prévois d'utiliser UILabel la plupart du temps pour mon application d'affichage de données.
Pour faire une histoire courte cependant, je souhaite laisser l'utilisateur appuyer sur un UILabel et faire répondre mon rappel à cela. Est-ce possible?
Merci.
userInteractionEnabled = true
Réponses:
Vous pouvez ajouter une
UITapGestureRecognizer
instance à votre UILabel.Par exemple:
la source
Si vous utilisez des storyboards, vous pouvez effectuer tout ce processus dans le storyboard sans code supplémentaire. Ajoutez une étiquette au storyboard, puis ajoutez un geste de toucher à l'étiquette. Dans le volet Utilitaires, assurez-vous que «Interaction utilisateur activée» est coché pour l'étiquette. À partir du geste du robinet (en bas de votre contrôleur de vue dans le storyboard), ctrl + cliquez et faites glisser vers votre fichier ViewController.h et créez une action. Ensuite, implémentez l'action dans le fichier ViewController.m.
la source
Swift 3.0
Initialisez le geste pour
tempLabel
Récepteur d'action
Swift 4.0
Initialisez le geste pour
tempLabel
Récepteur d'action
la source
Swift 2.0:
J'ajoute une chaîne nsmutable en tant que texte de sampleLabel, permettant l'interaction de l'utilisateur, ajoutant un geste de tapotement et déclenchant une méthode.
la source
Vous pouvez utiliser un UIButton à la place et définir le texte comme vous le souhaitez. Le bouton n'a pas à ressembler à un bouton si vous ne le souhaitez pas
la source
Pour ajouter le geste Tap sur UILable
et d'évaluer la méthode de sélection
Remarque: ajoutez UIGestureRecognizerDelegate dans le fichier .h
la source
Version Swift:
var tapGesture : UITapGestureRecognizer = UITapGestureRecognizer()
Puis à l'intérieur
viewDidLoad()
, ajoutez ceci:la source
Si vous souhaitez utiliser du texte
UILabel
multiligne dans votre bouton, créez un texte avec multiligne et ajoutez-le en tant que sous-vue à votre bouton.par exemple:
la source
Swift 3 de Alvin George
la source
La version Swift ressemble à ceci:
la source
Personnellement, je préfère la méthode d'écriture d'une extension pour UILabel. C'est ce que j'utilise.
Vous l'utiliseriez alors comme ceci à partir de n'importe quelle instance UILabel:
Cela peut potentiellement provoquer des fuites de mémoire, je crois, mais je n'ai pas encore déterminé la meilleure façon de les résoudre.
la source