Question

J'ai un NSTextView soutenu par un système de texte que je mets ensemble moi-même, le long des lignes de la section « Montage du texte système en main » dans le texte Présentation du système dans la documentation Cocoa. Il affiche avec succès le contenu du NSTextStorage à l'écran.

Mais quand je tape dedans, rien ne se passe-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 copier et coller le texte dans TextEdit, je peux même voir mes modifications. Et si je tape assez, 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 pouvais passer la meilleure partie d'un débogage jour. Qu'est-ce qui se passe ici?

Était-ce utile?

La solution

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. Si tout va bien je vous gagner des heures et des heures de travail sans résultat!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top