2016-12-17 3 views
0

j'ai une réponse venant de la api sous forme d'un texte que je veux analyser ce texte pour le mot « centre de santé Planned Parenthood » et insérer un lien hypertexte sur ce mot qui redirige vers plannedparenthood.org/portail du centre de santé.Insérer un lien hypertexte dans UILabel

mon approche:

NSString *text = response.content; 
text = [text stringByReplacingOccurrencesOfString:@"Planned Parenthood health center" 
             withString:@"<a href=\"http://www.plannedparenthood.org/health-center\">Planned Parenthood health center</a>"]; 

si le lien sur le texte est maintenant remplacé. Il est remplacé par

<a href=\"http://www.plannedparenthood.org/health-center\">Planned Parenthood health center </a> 

Qu'est-ce qui ne va pas pourquoi n'y at-il aucun lien ici? Suis-je en train de faire quelque chose de mal? J'ai également mis l'interaction activée par l'utilisateur à OUI

+0

'' NSMutableAttributedString est votre ami ... –

+0

double possible de [Créer tap-mesure « liens » dans le NSAttributedText d'un UILabel?] (http://stackoverflow.com/questions/1256887/create-tap-able-links-in-the-nsattributedtext-of-a-uilabel) – Multinerd

Répondre

3

iOS ne gère pas cela bien pour être honnête, probablement parce que vous avez l'intention d'utiliser UIButtons qui sont beaucoup plus faciles à tapper pour les utilisateurs.

Pour accomplir ce que vous voulez bien, vous ne pouvez pas utiliser un UILabel - vous devez utiliser un UITextView et définir sa propriété attributedText:

NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:@"Planned Parenthood health center"]; 
[attributedString addAttribute: NSLinkAttributeName value: @"http://www.plannedparenthood.com" range: NSMakeRange(0, str.length)]; 
textView.attributedText = attributedString; 

Notez que le UITextView doit être sélectionné mais non modifiable.

Il y a un peu un inconvénient avec cette méthode si vous avez un autre texte dans votre chaîne attribué qui n'est pas liée. Par exemple, si vous avez « S'il vous plaît sélectionner ici pour aller sur le site de Planned Parenthood » où « ici » est la seule partie du texte que vous voulez LIÉ. Dans ce cas, si vous tapez nulle part ailleurs dans le texte à côté du mot « ici », vous remarquerez qu'il sera en mesure d'être sélectionnée par l'utilisateur et ont le point culminant bleu.

Si vous utilisez un UITextView on ne souhaite pas, alors vous aurez besoin d'utiliser quelque chose comme la coutume TTTAttributedLabel