3 Stimmen

Ändern Sie die Farbe von UITextView-Links mit einem Filter?

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?

6voto

bhnascar Punkte 289

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.

3voto

bmeulmeester Punkte 1117

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.

1voto

Leander Punkte 562

UIwebDocumentView hat den fehlenden Selektor. Importieren Sie UIWebDocumentView.h, um ihn zu erhalten. Leider handelt es sich hierbei um eine private API, und Ihre App könnte von Apple abgelehnt werden :-(

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X