Сохранить отмену в измененном, связанном, NSAttributedString - PullRequest
0 голосов
/ 10 октября 2009

У меня есть приписанная строка, связанная с NSTextView. Я использую метод, который вызывается (используя KVO) каждый раз, когда строка редактируется, чтобы добавить атрибуты цвета фона в строку на основе соответствия regEx. Я делаю это, создавая новую изменяемую атрибутивную строку с -initWithAttributedString: затем -beginEditing, -addAttribute:, -endEditing. После того, как я добавил все атрибуты цвета фона, которые я хочу, я вызываю установщик строки [self setTextViewString:mutableAttributedString]. Проблема в том, что если в строку добавляются какие-либо атрибуты, это отменяет отмену и перемещает курсор в конец строки ,

Как мне сохранить отмену? Я поддерживал положение курсора, вызывая textView selectedRanges и setSelectedRanges: методы по обе стороны от установщика, но это все равно кажется немного хакерским.

Мне не удалось привязать текстовое представление непосредственно к mutableattributedstring, но, похоже, должен быть более прямой способ изменить связанную строку, чтобы она не мешала редактированию.

PS, добавление атрибутов происходит после завершения метода KVO, вызывая -performSelectorOnMainThread: Это был единственный способ получить добавленные атрибуты для отображения.

1 Ответ

0 голосов
/ 11 октября 2009

[self setTextView:mutableAttributedString]

Pardon? Вы устанавливаете свой textView на приписанную строку? Разве не имеет смысла держать там свой текстовый просмотр?

Попробуйте получить текстовое представление textStorage и заменить его содержимое новой приписанной строкой, отправив в текстовое хранилище сообщение setAttributedString:.

...