Die erkannten Links auf einem UITextView sind immer blau. Es gibt keine Möglichkeit, dies direkt zu ändern. Aber kann ich eine Art Filter überlagern, der beispielsweise Blau in Rot ändert?
Antworten
Zu viele Anzeigen?Es gibt tatsächlich einen Weg, dies mit einer privaten API zu tun.
Ein UITextView
hat ein (einzelnes) Unteransicht von Klasse UIWebDocumentView
mit dem Selector setUserStyleSheet:
.
Der folgende Code sollte die Farbe der Links auf Grün ändern. Zumindest hat es bei mir funktioniert! :)
for (UIView *subview in textView.subviews) {
[subview setUserStyleSheet:@"a { color: #00FF00; }"];
}
Ich weiß, dass dies wirklich spät ist, aber Stunden des Googelns haben mich nicht weitergebracht, also dachte ich, ich würde das teilen.
Es gibt keinen praktischen Weg, dies mit einem UITextView zu tun; was Sie versuchen können, ist die Verwendung eines UIWebView, das seine Eigenschaft "Links automatisch erkennen" ändert und dann das HTML neu formatiert.
UIWebView *webView = [[UIWebView alloc] init];
webText.delegate = self;
[webView setDataDetectorType:UIDataDetectorTypeLink];
NSString * htmlString = [NSString stringWithFormat:@" document.ontouchmove = function(event) { if (document.body.scrollHeight == document.body.clientHeight) event.preventDefault(); } * { margin:0; padding:0; } p { color:black; font-family:Helvetica; font-size:14px; } a { color:#000000; text-decoration:underline; }%@", [update objectForKey:@"text"]];
[webText loadHTMLString:htmlString baseURL:nil];
Oder etwas ähnliches.
Ich hoffe, das hilft.
BEARBEITEN
Vergessen Sie nicht, den UIWebView-Delegate zu implementieren, damit dies funktioniert.