我試圖實現屬性面板作爲基於NSDocument的應用程序的輔助窗口。該實現顯示了NSWindow(通過NSWindowController)。撤消輔助NSWindow,可可
目標是,如果主(文檔)或輔助(屬性窗口)中的任何一個處於活動狀態,則輔助窗口中的屬性修改器(「屬性窗口」)應該可以使用CMD-Z進行撤消。
出於某種原因,這是逃避我。
我目前的實施/測試是非常基本的。 爲了測試這個想法,我有一個NSSlider綁定到一個名爲'aValue'的屬性,暴露在「Properties」NWindowController上。這是這樣的:
- (void) undoAValueUsing:(int)oldValue {
self.aValue = oldValue;
}
- (void)setAValue:(int)aValue {
if(aValue != _aValue) {
NSLog(@"Value is now: %d", aValue);
[[self.undoManager prepareWithInvocationTarget:self] undoAValueUsing:_aValue];
[self.undoManager setActionName:@"Ra"];
_aValue = aValue;
}
因此,任何對屬性的更改都會記錄「撤消」操作。
問題是,沒有撤消出現......就好像它沒有註冊,或者如果活動菜單項正在查看其他撤消管理器。 CMD-Z只是產生一個「嘟嘟」(aka:noop)。
完整的代碼這個簡單的例子是在這裏:https://dl.dropboxusercontent.com/u/421935/TestApp/Test.zip
的想法是,你按一下按鈕,查看屬性面板,修改最上面的滑塊(沒有其他滑塊已撤消執行),你應該能夠CMD-Z取消它。
btw:如果你看看示例代碼,你會發現我已經嘗試將自定義窗口manager.undoManager設置爲document.undoManager。它沒有任何區別。
嗯。我覺得我瘋了。這應該這麼簡單! 必須錯過明顯的東西!
任何啓示o人的互聯網?