在UIWebview中显示字符串作为链接 - Swift

时间:2016-02-03 13:41:31

标签: ios swift uiwebview

我有一个像这样的字符串,

  

var str ="您好,请转到http://stackoverflow.com"

我希望在UIWebView中显示此字符串,以便http://stackoverflow.com显示为链接。

为此,我使用了UIWebView的loadHtmlString

但文本未显示为链接。它在UIWebView中显示为普通文本。

经过一些研究,我发现问题是missing of <a href = ""></a> tag

对于静态字符串,我可以手动将标记添加到字符串中。但我从http响应中获取字符串。所以我不知道如何在适当的索引中添加<a>标签。

有什么方法可以解析并在UIWebView中显示文本作为链接吗?

2 个答案:

答案 0 :(得分:4)

在UIWebView上将dataDetectorTypes设置为Link。以下是您可以在游乐场中运行和查看的示例:

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功能,并且您只是想显示链接,那么您应该使用UITextView同时支持dataDetectorTypes

答案 1 :(得分:2)

@ Joe的回答看起来也不错,这是另一个解决方案

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

中使用