Woher weiß ich, wann ein Anhangsattribut zu meinem NSTextView hinzugefügt wird?

8

Aufgrund der Semantik bestimmter NSTextView-Anhänge in meiner Anwendung möchte ich wissen, wann sie aus meinem Textspeicher eingefügt oder gelöscht werden.

Meine Unterklasse von NSTextView implementiert die Methode sentChangeTextInRange: ErsetzungString: Mit dieser Methode kann ich leicht erkennen, wann eine Anlage ersetzt werden soll (ich kann den Textspeicher im angegebenen Bereich durchsuchen).

Da die Ersetzungszeichenfolge nur ein NSString und kein NSAttributedString ist, kann ich von dieser Methode nicht sehen, ob ein Anhang eingefügt wird. Die Dokumentation geht sogar so weit, zu sagen, dass der String Null sein kann, wenn "nur Attribute" bearbeitet werden.

Die Frage ist also, was ist der beste Überschreibungspunkt, wenn ein Anhang eingefügt wird? Oder vielleicht so nützlich: Was ist der beste Überschreibungspunkt, wenn Attribute geändert werden?

Update: Ich sagte oben ich hatte keine Möglichkeit zu wissen, ob ein Anhang eingefügt wird. Es wird darauf hingewiesen, dass ich sagen kann, dass "ein" Anhang beteiligt ist, weil die Zeichenfolge den magischen NSAttachmentCharacter enthält. Aber ich werde keine spezifischen Informationen über den Anhang haben, bis die Bearbeitung abgeschlossen ist.

    
danielpunkass 23.10.2009, 15:59
quelle

2 Antworten

4

Ich würde mir die NSTextStorage-Delegate-Methode -textStorageDidProcessEditing: ansehen, die jedes Mal aufgerufen werden sollte, wenn eine Änderung am zugrunde liegenden Textspeicher vorgenommen wird. Sie können dann die Methoden -editedRange, -editedMask und -changeInLength verwenden, um zu bestimmen, welcher Abschnitt des Textspeichers geändert wurde, und in diesem Bereich nach Anhängen suchen, die für Sie von Interesse sein könnten.

    
Brian Webster 23.10.2009, 16:17
quelle
2

Sie können sich zwei NSTextStorage -Delegatenmethoden ansehen:

%Vor%

Innerhalb von textStorageWill/DidProcessEditing können Sie -[NSTextStorage editedMask] und -[NSTextStorage editedRange] aufrufen, um herauszufinden, was geändert wurde, und dann entsprechende Maßnahmen ergreifen.

    
Jonathan Hammer 23.10.2009 16:21
quelle

Tags und Links