Ich habe in der Tat einen anderen Weg gefunden, ohne eine Webansicht zu verwenden, aber denke daran, dass dies eine private API verwendet und im Appstore abgelehnt werden kann:
EDIT: Meine App wurde von Apple genehmigt, obwohl die private API verwendet wird!
Deklarieren Sie zuerst eine Kategorie in UITextView mit den Methoden
- (id)contentAsHTMLString;
- (void)setContentToHTMLString:(id)arg1;
Sie machen nur Folgendes:
- (id)contentAsHTMLString;
{
return [super contentAsHTMLString];
}
- (void)setContentToHTMLString:(id)arg1;
{
[super setContentToHTMLString:arg1];
}
Schreiben Sie nun eine Methode für bunte Links:
- (void) colorfillLinks;
{
NSString *contentString = [self.textViewCustomText contentAsHTMLString];
contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=\"true\""
withString:@"x-apple-data-detectors=\"true\" style=\"color:white;\""];
[self.textViewCustomText setContentToHTMLString:contentString];
}
Das Stilattribut wird für alle Arten von Links mit einer bestimmten Farbe festgelegt.
UITextViews werden wie über divs in Webiview gerendert, sodass Sie sogar noch weiter gehen und jeden Link-Typ separat einfärben können:
<div><a href="http://www.apple.com" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">http://www.apple.com</a></div>
Dies x-apple-data-detectors-type="link"
ist der Indikator für den genauen Typ des Links
BEARBEITEN
Auf iOS7
diese nicht mehr funktioniert. In iOS7 können Sie die Linkfarbe von UITextViews leicht ändern, indem Sie die Farbtonfarbe festlegen. Sie sollten nicht anrufen
- (id)contentAsHTMLString;
Sie werden keine Ausnahme mehr bekommen. Gehen Sie stattdessen wie folgt vor, wenn Sie iOS 7 und niedriger unterstützen möchten:
- (void) colorfillLinks;
{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
self.tintColor = [UIColor colorWithRed:79.0/255.0
green:168.0/255.0
blue:224.0/255.0
alpha:1.0];
} else if(![self isFirstResponder ]) {
NSString *contentString = [self contentAsHTMLString];
contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=\"true\""
withString:@"x-apple-data-detectors=\"true\" style=\"color:#DDDDDE;\""];
[self setContentToHTMLString:contentString];
}
}