Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift:转换为NSAttribute字符串的HTML数据不';不要让链接在标签中可点击_Html_Ios_Swift_Nsattributedstring - Fatal编程技术网

swift:转换为NSAttribute字符串的HTML数据不';不要让链接在标签中可点击

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 {

我有一个HTML格式的文本。我正在使用NSAttributed字符串的属性来解析它。它可以很好地对文本进行裁剪并显示在标签上。但是,对锚标记的解析并不能使链接可点击。这是我用于解析的以下代码

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
,或欺骗标签。谢谢。这很有效。非常棒的解决方案。