Tôi thực sự đã tìm thấy một cách khác mà không cần sử dụng chế độ xem web nhưng hãy nhớ rằng cách này sử dụng API riêng tư và có thể bị từ chối trong appstore:
CHỈNH SỬA: Ứng dụng của tôi đã được apple phê duyệt mặc dù sử dụng api riêng!
Đầu tiên khai báo một danh mục trên UITextView bằng các phương thức
- (id)contentAsHTMLString;
- (void)setContentToHTMLString:(id)arg1;
Họ chỉ đang làm những việc sau:
- (id)contentAsHTMLString;
{
return [super contentAsHTMLString];
}
- (void)setContentToHTMLString:(id)arg1;
{
[super setContentToHTMLString:arg1];
}
Bây giờ hãy viết một phương thức cho các liên kết đầy màu sắc:
- (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];
}
Nó thiết lập thuộc tính style với một màu cụ thể trên tất cả các loại liên kết.
UITextViews được hiển thị Webiview giống như thông qua divs, vì vậy bạn thậm chí có thể đi xa hơn và tô màu cho từng loại liên kết riêng biệt:
<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>
Đây x-apple-data-detectors-type="link"
là chỉ báo cho loại chính xác của liên kết
BIÊN TẬP
Trên iOS7
này không còn hoạt động. Trong iOS7, bạn có thể dễ dàng thay đổi màu liên kết của UITextViews bằng cách thiết lập màu sắc. Bạn không nên gọi
- (id)contentAsHTMLString;
nữa, bạn sẽ nhận được một ngoại lệ. Thay vào đó, hãy làm như sau nếu bạn muốn hỗ trợ iOS 7 trở xuống:
- (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];
}
}