Мне нужно восстановить визуальное состояние NSAttributedString после нажатия на него.Восстановить визуальное состояние NSAttributedString после нажатия на него
My NSAttributedString содержит ссылки, связанные с диапазонами.
В этом примере текст "@user" имеет аа ссылку на "htpp: //somesite.com/":
let text = "Hey @user!"
let attr = NSMutableAttributedString(string: text)
let range = NSRange(location: 4, length: 5)
attr.addAttribute(NSForegroundColorAttributeName, value: NSColor.orange, range: range)
attr.addAttribute(NSLinkAttributeName, value: "htpp://somesite.com/", range: range)
let tf = NSTextField(frame: NSRect(x: 0, y: 0, width: 200, height: 50))
tf.allowsEditingTextAttributes = true
tf.isSelectable = true
tf.stringValue = text
tf.attributedStringValue = attr
Он хорошо работает: нажмите на кнопку "@user" в текстовом поле, он запускает URL-адрес.
Но однажды нажат, приписывали цвет исчезает и заменяется на этой синей и подчеркивание добавлено:
Я не могу найти решение для восстановления исходный цвет после щелчка по строке (или во избежание автоматического изменения этого параметра).
Я видел this и, но фактического решения нет, и я не могу интегрировать указанную библиотеку в свой проект (мне бы очень хотелось, чтобы на самом деле не нужно было импортировать какую-либо библиотеку).
Обратите внимание, что мой существующий код находится в Swift, но я могу использовать решение Objective-C.
Первое решение: очень приятно. Однако побочный эффект - это немного проблема. Есть ли способ получить ссылку оттуда? Я бы смог отфильтровать его тип и установить правильный цвет. // Я не понимаю ваше второе решение, извините, если вы можете объяснить ...: p – Moritz
'NSTextFieldCell' также имеет свойство' attribitedStringValue'. – Willeke
Тем временем я отредактировал свой ответ. – Willeke