我将尝试使用NSAttributedString将包含超链接的大型HTML字符串呈现到UITextView中,其中一切都正常工作,除了超链接,它们实际上并没有打开链接。
例如,这是我的HTML字符串的虚拟版本:
例如,这是我的HTML字符串的虚拟版本:
let htmlString = "<html><p>If you would like to contact someone, you can email
them at <a class=rvts10 href=\"mailto:some@one.com\">some@one.com</a></p></html>"
我有一个名为convertHTML()
的函数,可以将字符串转换为具有html文档类型选项的NSAttributedString,并将其分配给UITextView的属性文本:
textView.attributedText = htmlString.convertHTML()
TextField是可选的,但不可编辑。页面加载时,您可以看到超链接样式(蓝色文本)和其他内容,但无法点击链接并打开邮件应用程序。
我猜我需要将“mailto:...”更改为iOS将识别的其他内容,但我不知道需要做什么才能使此链接可链接。
这是我的html方法:
func convertHtml() -> NSAttributedString{
guard let data = data(using: .utf8) else { return NSAttributedString() }
do{
return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
}catch{
return NSAttributedString()
}
}