Frage

Ich habe eine Textansicht, die ihren Inhalt aus einer zugeschrieben Zeichenkette in einem Modellobjekt gespeichert wird. Ich liste mehrere dieser Modellobjekte in einer Schublade und wenn der Benutzer klickt auf eine der Textansicht tauscht den Inhalt.

Ich brauche jetzt tauscht auch den Undo-Manager für die Textansicht. Ich initialisieren eine Undo-Manager auf meinem Modellobjekt und verwenden undoManagerForTextView es in die Textansicht zurückzukehren, aber etwas ist nicht ganz richtig.

Strategisch platzierte Protokollierung Aussagen zeigen mir, dass alles funktioniert wie geplant: beim Start ein neues Modell Objekt korrekt initialisiert und eine Nicht-Null-Undo-Manager wird immer durch die Textansicht gezogen. Aber wenn es darum geht, tatsächlich rückgängig zu machen, ich kann einfach nicht das Verhalten bekommen ich will.

öffnen Sie ein Fenster, geben Sie etwas ein und drücken Sie cmd + z und Arbeiten rückgängig machen. Ich öffne ein Fenster, geben Sie etwas, ein neues Modell auf dem Tisch, geben Sie etwas auswählen, um das erste Modell zurückgehen und versuchen, rückgängig zu machen und alles, was ich bekommen ist ein akustisches Signal.

Etwas auf die Dokumentation hat mich heben eine Augenbraue braue~~POS=HEADCOMP, als es bedeuten würde, dass ich nicht mit mehreren Modellobjekte haben rückgängig machen können:

  

Der Standard Undo und Redo Verhalten   gilt für Textfelder und Text in   Zellen, solange das Feld oder Zelle ist   der erste Responder (das heißt, die   Schwerpunkt der Tastaturaktionen). Sobald die   Einfügepunkt verlässt das Feld oder   Zelle, kann vor Operationen nicht sein   rückgängig gemacht.

War es hilfreich?

Lösung

Sie möchten mindestens NSUndoManager und Überschreibung removeAllActionsWithTarget: und removeAllActions, Unterklasse sie sich einzuloggen, möglicherweise sie nicht-Ops zu machen.

Vergessen Sie nicht, Ihre Unterklasse statt der ursprünglichen NSUndoManager zu instanziiert. (Leicht zu vergessen, und einige Leser können nicht erkennen, dass sie dies tun müssen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top