Изменения в NSTextView не достигают экрана - PullRequest
0 голосов
/ 16 ноября 2010

У меня есть NSTextView, поддерживаемый текстовой системой, которую я собрал самостоятельно, в соответствии с разделом «Сборка текстовой системы вручную» в Обзоре текстовой системы в документации по Какао. Он успешно отображает содержимое NSTextStorage на экране.

Но когда я набираю текст, кажется, ничего не происходит - текст на экране не меняется. Если я выделю текст, форма выделения предполагает, что текст изменился. Если я копирую и вставляю текст в TextEdit, я даже вижу свои правки. И если я наберу достаточно, я могу получить исключение:

NSRunStorage, _NSBlockNumberForIndex(): index (5897) beyond array bounds (5881)

Боже, это похоже на то, что я мог бы потратить большую часть дня на отладку. Что здесь происходит?

1 Ответ

1 голос
/ 16 ноября 2010

Убедитесь, что вы подключили NSTextStorage к NSLayoutManager следующим образом:

[textStorage addLayoutManager:layoutManager];

Вместо этого:

[layoutManager setTextStorage:textStorage];   //BAD

В документации по -[NSLayoutManager setTextStorage:] говорится, что она никогда не должна вызываться напрямую, только переопределена. Видимо в этом причина. Надеюсь, я сэкономил вам часы и часы бесплодной работы!

...