Я действительно нашел другой способ без использования веб-просмотра, но имейте в виду, что он использует частный API и может быть отклонен в магазине приложений:
РЕДАКТИРОВАТЬ: мое приложение было одобрено Apple, хотя частное использование API!
Сначала объявите категорию в UITextView с помощью методов
- (id)contentAsHTMLString;
- (void)setContentToHTMLString:(id)arg1;
Они просто делают следующее:
- (id)contentAsHTMLString;
{
return [super contentAsHTMLString];
}
- (void)setContentToHTMLString:(id)arg1;
{
[super setContentToHTMLString:arg1];
}
Теперь напишем метод для красочных ссылок:
- (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];
}
Он устанавливает атрибут стиля с определенным цветом для всех типов ссылок.
UITextView отображаются в Webiview, как и в div, поэтому вы можете пойти дальше и раскрасить каждый тип ссылки отдельно:
<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>
Это x-apple-data-detectors-type="link"
индикатор точного типа ссылки.
РЕДАКТИРОВАТЬ
На iOS7
этом больше не работает. В iOS7 вы можете легко изменить цвет ссылки UITextViews, установив цвет оттенка. Вы не должны звонить
- (id)contentAsHTMLString;
больше, вы получите исключение. Вместо этого сделайте следующее, если вы хотите поддерживать iOS 7 и ниже:
- (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];
}
}