2010-11-16 3 views
0

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

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

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

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

ответ

1

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

[textStorage addLayoutManager:layoutManager]; 

Вместо того, как это:

[layoutManager setTextStorage:textStorage]; //BAD 

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

Смежные вопросы