¿Cambiar el color de los enlaces de UITextView con un filter?

Los enlaces detectados en un UITextView siempre son azules. No hay forma de cambiar esto directamente. Pero ¿puedo superponer algún tipo de filter que cambie azul a, por ejemplo, rojo?

De hecho, hay una manera de hacerlo con la API privada .

Un UITextView tiene una UITextView (única) de la class UIWebDocumentView , con el selector setUserStyleSheet:

El siguiente código debe cambiar el color de los enlaces a verde. Al less, ¡funcionó para mí! 🙂

 for (UIView *subview in textView.subviews) { [subview setUserStyleSheet:@"a { color: #00FF00; }"]; } 

Sé que es muy tarde, pero las horas de Googling no me llevaron a ningún lado, así que pensé que lo compartiría.

No hay una forma práctica de hacer esto con un UITextView, lo que puedes intentar es usar una UIWebView cambiando su propiedad de 'auto detección de enlaces' y luego reformateando el HTML.

 UIWebView *webView = [[UIWebView alloc] init]; webText.delegate = self; [webView setDataDetectorType:UIDataDetectorTypeLink]; NSString * htmlString = [NSString stringWithFormat:@"<html><head><script> document.ontouchmove = function(event) { if (document.body.scrollHeight == document.body.clientHeight) event.preventDefault(); } </script><style type='text/css'>* { margin:0; padding:0; } p { color:black; font-family:Helvetica; font-size:14px; } a { color:#000000; text-decoration:underline; }</style></head><body><p>%@</p></body></html>", [update objectForKey:@"text"]]; [webText loadHTMLString:htmlString baseURL:nil]; 

O algo muy similar.

Espero que esto ayude.

EDITAR

No olvide implementar el delegado de UIWebView para que esto funcione.

UIwebDocumentView tiene el selector que falta. Importe UIWebDocumentView.h para getlo. Desafortunadamente, esta es una API privada, y su aplicación puede ser rechazada por Apple 🙁