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