2016-02-03 50 views
2

我有一個這樣的字符串,顯示字符串作爲UIWebView中的鏈接 - 斯威夫特

無功海峽=「你好,去http://stackoverflow.com

,我想顯示此字符串中一個UIWebView ,因此http://stackoverflow.com將顯示爲鏈接。

爲此,我使用了UIWebView的loadHtmlString

但是文本不顯示爲鏈接。它在UIWebView中顯示爲普通文本。

經過一番研究,我發現問題是missing of <a href = ""></a> tag

對於靜態字符串,我可以手動將標記添加到字符串。但是我從http響應中獲取字符串。所以我不知道如何在適當的索引中添加<a>標籤。

有沒有什麼辦法可以解析並顯示文本作爲UIWebView中的鏈接?

+2

使用是否需要將字符串顯示在'UIWebView' ?您可以在禁用編輯並啓用鏈接檢測的情況下在「UITextView」中顯示它 –

+1

是的。因爲我也在顯示圖像。 –

+2

@DeepikaMasilamani然後我推薦使用正則表達式('NSRegularExpression')並用''標籤包裝的字符串替換匹配的字符串 –

回答

4

dataDetectorTypes設置爲UIWebView上的鏈接。這是在操場的例子可以運行和查看:

import UIKit 
import XCPlayground 

let str = "Hello, go to http://stackoverflow.com" 
let webview = UIWebView(frame: CGRect(x: 0, y: 0, width: 200.0, height: 200.0)) 
webview.dataDetectorTypes = .Link 
webview.loadHTMLString(str, baseURL: nil) 

XCPlaygroundPage.currentPage.liveView = webview 

如果您的內容不依賴於任何HTML功能,你只是tyring顯示的鏈接,那麼你應該使用UITextView這也支持dataDetectorTypes

+0

非常感謝您的迴應..它的工作原理! –

+0

我也顯示圖像..所以我不能使用UITextView。 –

+0

有幫助的回答 - upvoted,我收藏這個以備後用。謝謝Joe – NSPratik

2

@喬的回答看起來也不錯,這裏是另一種解決方案

let str = "Hello, go to http://stackoverflow.com or to http://example.com " 

let detector = try! NSDataDetector(types: NSTextCheckingType.Link.rawValue) 

let matches = detector.matchesInString(str, options: [], range: NSMakeRange(0, str.characters.count)) 

var newStr = str 
for match in matches { 
    let url = (str as NSString).substringWithRange(match.range) 
    newStr = newStr.stringByReplacingOccurrencesOfString(url, withString: "<a href='\(url)'>\(url)</a>") 

} 

print(newStr) 

這會修改字符串,來然後在UIWebView

+0

非常感謝這個解決方案。我也會嘗試使用這個,以瞭解NSDataDetector。 –