Question

Je veux utiliser des chaînes attribuées avec NSLinkAttributeName Pour créer des liens clickables à l'intérieur d'un UILabel Instance dans mon projet iOS 7, qui est finalement possible sans utiliser de bibliothèques externes.

NSURL *url = [NSURL URLWithString:@"http://www.google.com"];

NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:
                          url, NSLinkAttributeName, nil];

L'application de l'attribut sur une chaîne affiche le texte comme bleu et souligné, mais rien ne se passe sur Click / Tap. L'interaction utilisateur est activée pour l'étiquette. Est-ce que quelqu'un sait comment faire cela? Merci!

Était-ce utile?

La solution

Je peux répondre à ma propre question maintenant: j'utilise UITextView à la place de UILabel à présent. J'ai formaté le UITextView Pour regarder et se comporter comme mes étiquettes et ajouter:

UITextView *textView = [[UITextView alloc] init];
textView.scrollEnabled = NO;
textView.editable = NO;
textView.textContainer.lineFragmentPadding = 0;
textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);
textView.delegate = self;

N'oubliez pas de définir le délégué, vous devez implémenter UITextViewDelegate! Maintenant, nous implémentons la méthode du délégué:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)url inRange:(NSRange)characterRange
{
     return YES;
}

Cela ouvre automatiquement le fourni le NSURL-Instance à partir de la chaîne attribuée dans ma question sur Click / Tap.

N'oubliez pas: cela fonctionne sur iOS 7 uniquement, pour le support hérité, vous avez besoin de bibliothèques externes

METTRE À JOUR:

Faire le UITextViewLe comportement du sieux comme des étiquettes était un gâchis total à la fin et je suis tombé sur des hideux ios-behaviours. J'ai fini par utiliser le TttattributedLabel bibliothèque qui est tout simplement géniale et m'a permis d'utiliser des étiquettes au lieu de UITextViews.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top