2011-08-31 42 views

回答

3

沒有可行的方法來做到這一點與UITextView,你可以嘗試使用UIWebView改變其'自動檢測鏈接'屬性,然後重新格式化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]; 

或者類似的東西。

希望這會有所幫助。

編輯

不要忘了執行UIWebView的委託這個工作。

+0

我曾考慮過這樣做,但UIWebView對我的需求來說實在太「沉重」,特別是因爲每個表視圖單元格都會有一個。 – cannyboy

+0

我認爲這應該是你最好的選擇,如果不是你唯一的選擇。我真的很好奇,看看是否有另一種解決方案,它會自動更好,因爲UIWebView確實太重,不適合你的原因。 (如果你問我,請點擊每個原因。) – Craimasjien

7

實際上有一種方法可以用私有API來做到這一點

UITextView具有UIWebDocumentView類的(單個)子視圖中,與選擇setUserStyleSheet:

以下代碼應該將鏈接的顏色更改爲綠色。至少,它對我有效! :)

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

我知道這是真的很晚,但幾個小時的谷歌搜索沒有讓我沒有在哪裏,所以我想我會分享這個。

+0

UIView中沒有setUserStyleSheet方法,你確定這有效嗎? – Gunhan

+0

沒有setUserStyleSheet方法可用。 – Madhu

+2

當然,它是不可用的,因爲它是私人的。您需要轉發聲明如下: '@interface UIView(Stylesheet) - (void)setUserStyleSheet:(NSString *)str; @ end' – Norswap

1

UIwebDocumentView有缺失的選擇器。 導入UIWebDocumentView.h來獲取它。 不幸的是,這是一個私人API,yourapp可能會被蘋果拒絕:-(