Я использую автоопределение (dataTypes = .link) для обнаружения ссылки в моем UITextView.Я хочу определить только свою пользовательскую ссылку (пользовательская схема: // some / link / path) и не хочу определять общий URL (http://somepage.net или https://theotherpage.com).
в textView (_ textView, shouldInteractWith ...) функция делегата UITextView, можно было обрабатывать только с пользовательской ссылкой и ничего не делать с общими 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)
}
}
}
Я ожидаю
- Пользовательские ссылки (custom-схема: // some / page) имеют цвет не по умолчанию (for пример синий)
- другие ссылки (http://xxx, https://xxxx) имеют цвет по умолчанию (например, черный)