Frage

Ich möchte zugeschriebene Saiten mit verwenden NSLinkAttributeName So erstellen Sie anklickbare Links in a UILabel Instanz in meinem iOS 7 -Projekt, das jetzt endlich möglich ist, ohne externe Bibliotheken zu verwenden.

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

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

Wenn Sie das Attribut auf einer Zeichenfolge anwenden, wird der Text als blau und unterstrichen angezeigt, aber beim Klicken/Tippen passiert jedoch nichts. Die Benutzerinteraktion ist für das Etikett aktiviert. Weiß jemand, wie man das macht? Vielen Dank!

War es hilfreich?

Lösung

Ich kann jetzt meine eigene Frage beantworten: Ich benutze UITextView Anstatt von UILabel jetzt. Ich habe das formatiert UITextView Aussehen und sich wie meine Etiketten verhalten und hinzugefügt:

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;

Vergessen Sie nicht, den Delegierten festzulegen, Sie müssen implementieren UITextViewDelegate! Jetzt implementieren wir die Delegate -Methode:

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

Dies öffnet automatisch das bereitgestelltes NSURL-Instanz aus der zugeschriebenen Zeichenfolge in meiner Frage auf klick/tippen.

Denken Sie daran: Dies funktioniert nur auf iOS 7. Für die Legacy -Unterstützung benötigen Sie externe Bibliotheken

AKTUALISIEREN:

Das machen UITextViewS verhalten sich am Ende ein totales Chaos und ich stieß auf einige abscheuliche iOS-Behaviours. Ich benutzte die am Ende TttattributedLabel Bibliothek, die einfach großartig ist und es mir ermöglicht, Etiketten anstelle von zu verwenden UITextViews.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top