En raison de la sémantique de certaines pièces jointes NstextView de ma demande, je souhaite savoir quand ils sont insérés ou supprimés de mon stockage de texte. P>
Ma sous-classe de NstextView implémente le dactchangetextinrange: remplaçant: méthode, ce qui me permet de voir facilement lorsqu'une pièce jointe est sur le point d'être remplacée (je peux rechercher le stockage de texte à la plage spécifiée). P>
Étant donné que la chaîne de remplacement n'est qu'une nstring et non une nsattributedstring, je n'ai aucun moyen de voir de cette méthode si une pièce jointe est insérée. La documentation va même jusqu'à dire que la chaîne peut être nulle si "seuls les attributs" sont édités. P>
La question est donc, quel est le meilleur point de remplacement pour voir quand une pièce jointe est insérée? Ou peut-être aussi utile: quel est le meilleur point de remplacement pour voir lorsque des attributs sont modifiés? P>
mise à jour: j'ai dit ci-dessus, je n'avais aucun moyen de savoir si une pièce jointe est insérée. Cela m'a souligné que je peux dire que "une" pièce jointe est impliquée, car la chaîne contiendra la magie NstatachmentCharacter. Mais je n'aurai pas d'informations spécifiques sur la pièce jointe qu'après la fin de l'édition. P>
3 Réponses :
Je jetterais un coup d'œil à la méthode de déléguée NstextStorage -TextStorageDIdProcessité:, qui devrait être appelée chaque fois qu'un changement est effectué au stockage de texte sous-jacent. Vous pouvez ensuite utiliser les méthodes -DitedRangeDrange, -Ditedmask et -Changerinlength pour déterminer quelle section du stockage de texte a été modifiée et examinez dans cette plage pour toutes les pièces jointes qui pourraient vous intéresser. P>
Merci, Brian. Ce n'est pas aussi idéal que j'espérais mais il semble que cela va faire l'affaire. C'est dommage qu'ils n'incluent pas les attributs de la méthode de Dépôt ...
Autant que je puisse dire, -texttoragewillProcessédiction: code> permet de modifier davantage de modifications au texte que
-textStoragedIdProcessité: code>. Vous voudrez peut-être l'utiliser à la place.
Vous voudrez peut-être jeter un coup d'œil à deux intérieur NStextStorage code> Délégraphe:
textStorageWill / DidProcessediting code>, vous pouvez appeler < Code> - [NSTExtExtStorage Editédmask] code> et
- [NSTExtExtStorage Editedrange] Code> Pour savoir ce qui a changé, puis agissez en conséquence. P> P>
Salut Jonathan - Merci de commenter. J'ai voté votre réponse, mais j'ai décidé d'accepter Brian, car c'était des moments plus tôt et que cela avait accumulé quelques votes supplémentaires.
Les méthodes de délégué ont divers cas de coin. Il vaut mieux Sous-classe NStextStorage Code> Classe
. p>