101 votes

Comment faire en sorte que UILabel réponde au robinet ?

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 court, je souhaite laisser l'utilisateur appuyer sur un UILabel et que mon rappel y réponde. Est-ce possible?

Merci.

220voto

pythonquick Points 4314

Vous pouvez ajouter une UITapGestureRecognizer à votre UILabel.

Par example:

 UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTapped)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[myLabel addGestureRecognizer:tapGestureRecognizer];
myLabel.userInteractionEnabled = YES;

39voto

leenyburger Points 58

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 de tapotement (en bas de votre contrôleur de vue dans le storyboard), ctrl + clic et faites glisser vers votre fichier ViewController.h et créez une action. Ensuite, implémentez l'action dans le fichier ViewController.m.

18voto

Koushik Points 650

Rapide 3.0

Initialiser le geste pour tempLabel

 tempLabel?.text = "Label"
let tapAction = UITapGestureRecognizer(target: self, action: #selector(self.actionTapped(_:)))
tempLabel?.isUserInteractionEnabled = true
tempLabel?.addGestureRecognizer(tapAction)

Récepteur d'action

 func actionTapped(_ sender: UITapGestureRecognizer) {
    // code here
}

Rapide 4.0

Initialiser le geste pour tempLabel

 tempLabel?.text = "Label"
let tapAction = UITapGestureRecognizer(target: self, action:@selector(actionTapped(_:)))
tempLabel?.isUserInteractionEnabled = true
tempLabel?.addGestureRecognizer(tapAction)

Récepteur d'action

 func actionTapped(_ sender: UITapGestureRecognizer) {
    // code here
}

8voto

A.G Points 9897

Rapide 2.0 :

J'ajoute une chaîne nsmutable en tant que texte de sampleLabel, permettant l'interaction de l'utilisateur, ajoutant un geste tactile et déclenchant une méthode.

 override func viewDidLoad() {
    super.viewDidLoad()

    let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.")
    newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue], range: NSMakeRange(4, 4))
    sampleLabel.attributedText = newsString.copy() as? NSAttributedString

    let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapResponse:")
    tapGesture.numberOfTapsRequired = 1
    sampleLabel.userInteractionEnabled =  true
    sampleLabel.addGestureRecognizer(tapGesture)

}
func tapResponse(recognizer: UITapGestureRecognizer) {
    print("tap")
}

4voto

Hardik Thakkar Points 11

Pour ajouter un geste Tap sur UILable

 UITapGestureRecognizer *tapAction = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lblClick:)];
tapAction.delegate =self;
tapAction.numberOfTapsRequired = 1;

//Enable the lable UserIntraction
lblAction.userInteractionEnabled = YES;
[lblAction addGestureRecognizer:tapAction];   

et d'évaluer la méthode de sélection

 - (void)lblClick:(UITapGestureRecognizer *)tapGesture {

}

Remarque : ajoutez UIGestureRecognizerDelegate dans le fichier .h

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X