我一直在爲我的可可應用程序(OS 10.9)提供撤消功能,並且我已經成功實現了使用NSUndoManager的撤消功能實例。但是,我無法在編輯菜單下取消「撤消」文本!我正在使用setActionName方法,詳見Apple的文檔。我的相關方法:NSUndoManager setActionName:不更改菜單文本
- (void)FinishEditingName {
[[self UndoManager] registerUndoWithTarget:[self TestObject] selector:@selector(setName:) object:[NSString stringWithFormat:@"Testing Undo!"]];
[[self UndoManager] setActionName:@"Edit Name"];
[[self TestObject] setName:[NSString stringWithFormat:@"New Name"]];
NSLog([NSString stringWithFormat:@"%@",[[self UndoManager] undoActionName]]);
}
同樣,撤銷完美的作品,即[[self TestObject] Name]
設置「新名稱」上調用此方法,選擇編輯 - >撤消將此改爲「測試撤消!」。但是,「編輯」菜單的第一個條目應該更改爲「撤消編輯名稱」文本,但不是,它只是保留爲「撤消」。正如你所看到的,我已經確認文本應該通過吐出NSLog(),它工作得很好(即它提供「編輯名稱」)更改。我在這裏錯過了什麼?我是否需要以某種方式將NSUndoManager鏈接到NSMenu?如果是這樣,這是從文檔中丟失!
在此先感謝!
此代碼在什麼對象?這個方法從哪裏調用? –
在這種情況下,'self'是NSWindowController的自定義子類。該方法通過編輯窗口中的NSTextField來調用。 –
WindowController的undoManager如何設置? –