comment définir le texte d'un UITextView pour qu'il soit en gras et non cliquable

StackOverflow https://stackoverflow.com//questions/22064380

  •  23-12-2019
  •  | 
  •  

Question

J'ai le HTML suivant dans un UITextView et j'aimerais en faire un UITextView

c'est mon corps pour la note

<a href="/arc/item/21">food item - more item stuff</a>;`

Permettez-moi d'ajouter :il s'affiche actuellement en bleu, souligné et non cliquable.Je voudrais le rendre en gras et non cliquable.J'ai lu la documentation concernant linkTextAttributes mais, ne l'ayant pas utilisé, cela me dépasse un peu et je ne vois pas vraiment de moyen simple de manipuler cela.Comment puis-je simplement rendre le lien ci-dessus en gras et en noir (pas en bleu) et conserver la nature non cliquable ?

Était-ce utile?

La solution

MISE À JOUR (solution utilisant linkTextAttributes de UITextView)

self.testTextView.editable = NO;
self.testTextView.selectable = YES;
self.testTextView.userInteractionEnabled = NO;  // workaround to disable link - CAUTION: it also disables scrolling of UITextView content
self.testTextView.dataDetectorTypes = UIDataDetectorTypeLink;
self.testTextView.linkTextAttributes = @{NSFontAttributeName : [UIFont boldSystemFontOfSize:14.0f], // NOT WORKING !?
                                         NSForegroundColorAttributeName : [UIColor redColor]};

...

self.testTextView.text = @"Lorem ipsum http://www.apple.com Lorem ipsum";

Comme vous pouvez le voir dans les commentaires, je n'ai pas pu définir une nouvelle police sur linkTextAttributes, même si l'attribut color fonctionnait comme prévu.

Si vous pouvez vous en sortir avec l'attribut color ou un autre attribut de texte pour styliser vos URL et que vous n'avez pas à vous soucier du défilement UITextView désactivé, alors cela peut être votre solution.


PRÉCÉDENT (solution alternative)

Si vous utilisez Storyboard/xib, assurez-vous d'avoir désélectionné Détection -> Liens pour votre UITextView.Vous pouvez mettre votre lien en gras en définissant sa police de conteneur sur une police de caractères grasse.Si vous souhaitez prendre en charge différents styles de texte/police dans un seul objet chaîne, vous devriez vraiment rechercher NSAttributedString ou NSMutableAttributedString.

Voir: https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSAttributedString_Class/Reference/Reference.html.

Exemple:

UIFont *linkFont = [UIFont fontWithName:@"SomeBoldTypeface" size:12];
NSString *link = @"food item - more item stuff";

NSMutableAttributedString *someString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"is my body for the note %@; let me ad", link]];
[someString addAttribute:NSFontAttributeName value:linkFont range:NSMakeRange(24, link.length)];

UITextView *textView = [[UITextView alloc] init];
textView.attributedText = someString;
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top