我有一个像这样的字符串,
var str ="您好,请转到http://stackoverflow.com"
我希望在UIWebView中显示此字符串,以便http://stackoverflow.com
显示为链接。
为此,我使用了UIWebView的loadHtmlString
。
但文本未显示为链接。它在UIWebView中显示为普通文本。
经过一些研究,我发现问题是missing of <a href = ""></a> tag
。
对于静态字符串,我可以手动将标记添加到字符串中。但我从http响应中获取字符串。所以我不知道如何在适当的索引中添加<a>
标签。
有什么方法可以解析并在UIWebView中显示文本作为链接吗?
答案 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