我正在使用自动检测(dataTypes = .link)来检测UITextView中的链接。 我只想检测我的自定义链接(custom-scheme:// some / link / path),而不想检测一般URL(http://somepage.net或https://theotherpage.com)。
在UITextView委托的textView(_ textView,shouldInteractWith ...)函数中,可以仅使用自定义链接进行处理,而对于常规URL则不执行任何操作。 但是,检测到的链接颜色为蓝色,包括一般的颜色。
我尝试过...
但是,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)
}
}
}
我希望