textView添加可点击的富文本

该代码段展示了如何在iOS中使用Swift处理富文本,将特定字符串转化为可点击的链接,并设置点击事件。通过设置`attributedText`属性,创建了两个链接分别对应《用户服务协议》和《隐私政策》,点击链接会触发相应的打印事件。

    func configService() {

        let str = "我已阅读并同意《用户服务协议》和《隐私政策》"

        let str1 = "《用户服务协议》"

        let str2 = "《隐私政策》"

        let range1 = (str as NSString).range(of: str1)

        let range2 = (str as NSString).range(of: str2)

        let font = UIFont.systemFont(ofSize: 12)

        let color =  colorLiteral(red: 0.2, green: 0.2, blue: 0.2, alpha: 1)

        let color1 =  colorLiteral(red: 0.8352941176, green: 0.06274509804, blue: 0.0431372549, alpha: 1)

        let att: [NSAttributedStringKey: Any] = [

            .foregroundColor: color,

            .font: font

        ]

        let att1: [NSAttributedStringKey: Any] = [

            .link: "service://",

            .font: font,

            .foregroundColor: color1

        ]

        let att2: [NSAttributedStringKey: Any] = [

            .link: "privacy://",

            .font: font,

            .foregroundColor: color1

        ]

        let attStr = NSMutableAttributedString.init(string: str, attributes: att)

        attStr.addAttributes(att1, range: range1)

        attStr.addAttributes(att2, range: range2)

        textView.attributedText = attStr

        textView.delegate = self

        // 消除超链接原有的字体颜色,此处如不设置,设置的att1颜色可能不会生效

        textView.linkTextAttributes = [:]

        // 此处必须设置为true,否则点击事件会不生效

        textView.isSelectable = true

        // 此处必须设置为false

        textView.isEditable = false

    }

    // UITextViewDelegate

    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {

        if URL.scheme == "service" {

            print("service点击事件")

        } else if URL.scheme == "privacy" {

            print("privacy点击事件")

        }

        return true

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值