2010-11-16 13 views
0

J'ai un NSTextView soutenu par un système de texte que j'ai assemblé moi-même, en suivant la section «Assembler le système de texte à la main» dans la présentation du système de texte dans la documentation Cocoa. Il affiche avec succès le contenu de NSTextStorage sur l'écran.Modifications apportées à NSTextView n'atteignant pas l'écran

Mais quand je tape dedans, rien ne semble se passer - le texte à l'écran ne change pas. Si je sélectionne le texte, la forme de la sélection suggère que le texte a changé. Si je copie et colle le texte dans TextEdit, je peux même voir mes modifications. Et si je assez type, je peux l'obtenir pour lancer une exception:

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

Golly, cela ressemble le genre de chose que je pourrais passer la meilleure partie d'un débogage jour. Que se passe t-il ici?

Répondre

1

Assurez-vous que vous avez connecté le NSTextStorage au NSLayoutManager comme ceci:

[textStorage addLayoutManager:layoutManager]; 

Au lieu de comme ceci:

[layoutManager setTextStorage:textStorage]; //BAD 

La documentation sur -[NSLayoutManager setTextStorage:] dit qu'il ne devrait jamais être appelé directement, seulement surchargée . Apparemment, c'est la raison. J'espère vous avoir sauvé des heures et des heures de travail infructueux!