我试图实现属性面板作为基于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人的互联网?