启用了自动检测的可篡改链接,没有常规URL链接

时间:2019-02-18 10:57:15

标签: swift uitextview

我正在使用自动检测(dataTypes = .link)来检测UITextView中的链接。 我只想检测我的自定义链接(custom-scheme:// some / link / path),而不想检测一般URL(http://somepage.nethttps://theotherpage.com)。

在UITextView委托的textView(_ textView,shouldInteractWith ...)函数中,可以仅使用自定义链接进行处理,而对于常规URL则不执行任何操作。 但是,检测到的链接颜色为蓝色,包括一般的颜色。

我尝试过...

  • a。 textView.tintcolor = UIColor.nonBlueColor
  • b。 textView.linkTextAttributes = linkAttributes(在设置linkAttributes .foregroundColor中)
  • c。 mutableAttributed.addAttribute(.foregroundColor,值:UIColor.blue,range:range)... c带有a或b。

但是,a和b更改了所有颜色(不是特定的链接)。

而且,c根本没有改变颜色。似乎自动检测和默认tintColor设置的优先级更高。

for tag in comment.tags.map({ "#" + $0 }) {
    let range = (text as NSString).range(of: tag)
    // non-English characters should be encoded with PercentEncoding
    if let encoded = tag.dropFirst().addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
        if let link = NSURL(string: "custom-scheme://hashtag/" + encoded) {
            mutableAttributed.addAttribute(.link, value: link, range: range)
            mutableAttributed.addAttribute(.foregroundColor, value: UIColor.red, range: range)
        }
    } else {
            log.writeError(msg: "encoding to percent string failed")
            if let link = NSURL(string: "custom-scheme://hashtag/" + tag.dropFirst()) {
                mutableAttributed.addAttribute(.link, value: link, range: range)
        }
    }
}

我希望

  • 自定义链接(自定义方案:// some / page)具有非默认颜色(例如蓝色)
  • 其他链接(http://xxxhttps://xxxx)具有默认颜色(例如黑色)

0 个答案:

没有答案