In meiner iOS-Anwendung Schnittstelle habe ich explizite undo & Redo-Taste (Shake-to-Rückgängig ist eine ziemlich schwergewichtige Aktion und in diesem Zusammenhang, Undos sind ziemlich häufig durchgeführt). Normalerweise würde ich KVO verwenden, um die cundUndo- und canRedo-Schlüsselpfade von NSUndoManager zu beobachten und & die Schaltflächen zu deaktivieren, wenn die Benachrichtigungen eingehen. Leider scheint NSUndoManager für diese Schlüsselpfade nicht KVO-konform zu sein - oder zumindest ich Ich sehe nichts in Bezug auf Benachrichtigungen.NSUndoManager und Aktivieren/Deaktivieren einer Rückgängig-Taste
Also meine Frage ist: Wie bekomme ich das funktioniert? Mache ich es nur falsch mit KVO? (Ich habe doppelte & dreifach überprüft, aber es gibt immer diese Möglichkeit). Gibt es einen anderen Weg, an den ich nicht denke? (Ich habe allerdings nur den Wert von -canUndo überprüft, jedes Mal, wenn sich der Runloop dreht, aber das hat irgendwie einen schlechten Code-Geruch für mich).
(Beachten Sie, dass es durchaus möglich ist, dass NSUndoManager auf dem iOS und Mac OS X anders ist, so glaube ich nicht „Es auf dem Mac funktioniert“ eine hilfreiche Antwort sein wird, in diesem Fall)
Awesome - NSUndoManagerWillCloseUndoGroupNotification ist die, die ich zuvor verpasst hatte. Alles ergibt jetzt Sinn. Danke @aclark. –
Eine letzte Folge: Das alles hat perfekt funktioniert. –
Die Dokumentation sagt: "Posted vor einem' NSUndoManager' Objekt schließt eine Rückgängig-Gruppe, die in der Implementierung der 'endUndoGrouping' Methode auftritt.". Ich kann jedoch bestätigen, dass es veröffentlicht wird, wenn Sie einen einzelnen Undo registrieren (z. B. mit '-registerUndoWithTarget: selector: object:'). Sehr nützlich, um 'canUndo' auf' notification.object' ('NSUndoManager') aufzurufen und die Schaltfläche" Rückgängig "in der Benutzeroberfläche zu aktivieren/deaktivieren. –