Ho trovato davvero un altro modo senza utilizzare una visualizzazione web, ma tieni presente che questa utilizza API private e potrebbe essere rifiutata in appstore:
EDIT: la mia app è stata approvata da Apple anche se l'uso privato di API!
Prima dichiara una categoria su UITextView con i metodi
- (id)contentAsHTMLString;
- (void)setContentToHTMLString:(id)arg1;
Stanno solo facendo quanto segue:
- (id)contentAsHTMLString;
{
return [super contentAsHTMLString];
}
- (void)setContentToHTMLString:(id)arg1;
{
[super setContentToHTMLString:arg1];
}
Ora scrivi un metodo per i link colorati:
- (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];
}
Imposta l'attributo di stile con un colore specifico su tutti i tipi di collegamenti.
UITextViews è reso Webiview come tramite div in modo da poter anche andare oltre e colorare ciascun tipo di collegamento separatamente:
<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>
Il x-apple-data-detectors-type="link"
è l'indicatore per il tipo esatto del collegamento
MODIFICARE
Su iOS7
questo non funziona più. In iOS7 puoi facilmente cambiare il colore del collegamento di UITextViews impostando il colore della tinta. Non dovresti chiamare
- (id)contentAsHTMLString;
più, otterrai un'eccezione. Invece fai quanto segue se vuoi supportare iOS 7 e versioni precedenti:
- (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];
}
}