В приложении, над которым я работаю, пользователь вводит простой текст, и приложение форматирует текст, преобразовывая его в NSAttributedString, и отображает его. Все это происходит в прямом эфире.
В настоящее время я выполняю следующие действия в методе делегата textDidChange моего NSTextView:
- (void)textDidChange:(NSNotification *)notification {
// saving the cursor position
NSInteger insertionPoint = [[[self.mainTextView selectedRanges] objectAtIndex:0] rangeValue].location;
// this grabs the text view's contact as plain text
[self updateContentFromTextView];
// this creates an attributed strings and displays it
[self updateTextViewFromContent];
// resetting the cursor position
self.mainTextView.selectedRange = NSMakeRange(insertionPoint, 0);
}
Хотя это в основном работает, это не идеально. Текст, кажется, мигает в течение доли секунды (вы особенно заметили это на красных точках при орфографических ошибках), и когда курсор был ранее около одного из краев видимого прямоугольника, позиция прокрутки сбрасывается. В моем случае это очень нежелательный побочный эффект.
Итак, мой вопрос: есть ли лучший способ сделать то, что я пытаюсь сделать?