Добавлять текст в NSTextView, не нарушая стек отмены - PullRequest
0 голосов
/ 14 января 2020

У меня есть приложение на основе NSTextView, в котором у меня есть различные команды для изменения текста. Чтобы заменить часть, я использую следующий фрагмент:

if ([textView shouldChangeTextInRange:range replacementString:string]) { //string
  [textStorage beginEditing];
  [textStorage replaceCharactersInRange:range withAttributedString:attributedString];
  [textStorage endEditing];
  [textView didChangeText];
}

Моя проблема начинается, когда я хочу добавить в конце текстового представления. В этом случае я не могу использовать shouldChangeTextInRange:range replacementString:string, поэтому я использую:

textView.textStorage?.beginEditing()
self.textView.textStorage?.append(NSAttributedString(string: string))
self.textView.scrollToEndOfDocument(nil)
textView.textStorage?.endEditing()
textView.didChangeText()

Хотя это хорошо работает для атрибутов, Undo полностью ломается. Любая идея, как я могу решить эту проблему?

...