首页 > 解决方案 > 打开文本集上的链接到 UILabel 作为属性字符串。从 json 响应中读取属性字符串

问题描述

我正在我的 tableview 单元格中阅读这个 json 响应。我已将其设置为 UILabel 并设法将其显示为我的标签的属性刺痛。我的观点是将标签内的文本显示为链接,但点击链接不起作用。我想要的是点击这些链接打开浏览器。

{"Disclaimer":"I have read & accept the <a href=\"https:\/\/staging.rentalcover.com\/pds\/W80P-J8ZP-INS\" target=\"_blank\">Policy Terms<\/a>. I have read & accept the <a href=\"https:\/\/staging.rentalcover.com\/pds\/W80P-J8ZP-INS\">Policy Terms<\/a>. This policy is issued by RentalCover.com, AFSL No.490058 and underwritten by Assetinsure Pty Ltd."}

下面是我的代码

var htmlResponse:String = obj.Disclaimer ?? ""
let myText = htmlResponse
lbl_Disclaimer.attributedText = self.stringFromHtml(string: myText)
lbl_Disclaimer.font = UIFont(name: "Poppins-Regular", size: 13)

// MARK:- HTML TO STRING
func stringFromHtml(string: String) -> NSAttributedString? {
    do {
        let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
        if let d = data {
            let str = try NSAttributedString(data: d,
                                             options: [NSAttributedString.DocumentReadingOptionKey.documentType:  NSAttributedString.DocumentType.html],
                                             documentAttributes: nil)
            return str
        }
    } catch {
    }
    return nil
}

文本如何在我的应用程序中显示的图像。 在此处输入图像描述

我在 json 响应中获取文本“政策条款”的链接,并希望它可以点击以在浏览器中打开链接。

谢谢

标签: iosswiftuilabelnsattributedstringurlspan

解决方案


使用 UIWebView 来实现这一点。在 UIlable 上,您可以分配 AttributedText,但无法确定从文本中点击了哪个特定单词。所以,放置一个 UIWebView 并调用loadHTMLString("<HTML>some string </HTML>")方法。实现委托方法StartLoadRequest

请使用以下代码:-

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebView.NavigationType) -> Bool {
        guard let url = request.url else{
            return false
        }
        if "\(url)".contains("http"){
            UIApplication.shared.openURL(request.url!)
        }
        return false
    }

推荐阅读