swift:转换为NSAttribute字符串的HTML数据不';不要让链接在标签中可点击
我有一个HTML格式的文本。我正在使用NSAttributed字符串的属性来解析它。它可以很好地对文本进行裁剪并显示在标签上。但是,对锚标记的解析并不能使链接可点击。这是我用于解析的以下代码swift:转换为NSAttribute字符串的HTML数据不';不要让链接在标签中可点击,html,ios,swift,nsattributedstring,Html,Ios,Swift,Nsattributedstring,我有一个HTML格式的文本。我正在使用NSAttributed字符串的属性来解析它。它可以很好地对文本进行裁剪并显示在标签上。但是,对锚标记的解析并不能使链接可点击。这是我用于解析的以下代码 extension String { var htmlToAttributedString: NSAttributedString? { guard let data = data(using: .utf8) else { return NSAttributedString() } do {
extension String {
var htmlToAttributedString: 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()
}
}
var htmlToString: String {
return htmlToAttributedString?.string ?? ""
}
当我运行应用程序并将标签的值设置为:
text = "<p>This is <a href=\"http://www.google.com\">Google Home</a></p>"
simpleTextLabel.attributedText = text.htmlToAttributedString
text=“这是
simpleTextLabel.AttributeText=text.htmlToAttributedString
iOS应用程序上的输出如下所示,但单击时不会发生任何变化:
这是
我如何在safari中打开它?从您的线路:
simpleTextLabel.attributedText = text.htmlToAttributedString
我们可以假设simpletextlab
是UILabel
从UILabel
到不“可交互”是基本行为。您可以在其上添加点击手势,但它会将其转换为ui按钮
使用ui标签
有一些技巧,可以找到它被点击的确切位置,检查是否有链接,等等。
寻找“UILabel Clickable”:等等。甚至还有一些第三方LIB
<> <强> >(以我的拙见)认为它是一个“黑客”。
有一个很好的例子。在2:34,它解释了如果需要与显示的文本交互,则首选UITextView
而不是UILabel
有一个UITextViewDelegate
方法可用于:
请注意,UITextView
和UILabel
的呈现方式存在细微差异。如果你把它们叠加在一起,它们就不会有相同的“起点”,布局就有点不同了。但是,只要稍作更改,它就可以是相同的(例如:)
还请注意,根据将
UITextView
修改为UILabel
视觉渲染的小修改,用户不会注意到差异(事实上,除了使用UITextView
/UITextViewDelegate
的本机方法之外,这也很重要,它可以让其他开发人员在以后很容易理解,如果需要做一些小的修改,也可以在几个月内理解).如何显示字符串?哪个操作系统?抱歉,我刚刚编辑了这个问题以澄清。它的错误是默认情况下不可单击的UILabel
(如果simpleTextLabel
是其中之一)。这是UILabel
的正常行为。使用UITextView
,或欺骗标签。谢谢。这很有效。非常棒的解决方案。