プロパティ パネルを NSDocument ベースのアプリのセカンダリ ウィンドウとして実装しようとしています。実装は、NSWindow を (NSWindowController 経由で) 示しています。
目標は、メイン (ドキュメント) またはセカンダリ (プロパティ ウィンドウ) のいずれかがアクティブな場合に、セカンダリ ウィンドウ (「プロパティ ウィンドウ」) のプロパティ修飾子を 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 は単に「ビープ音」 (別名: noop) を生成します。
この単純な例の完全なコードは次のとおりです: https://dl.dropboxusercontent.com/u/421935/TestApp/Test.zip
ボタンをクリックしてプロパティ パネルを表示し、一番上のスライダーを変更すると (他のスライダーには元に戻す機能が実装されていません)、CMD-Z で元に戻すことができるはずです。
ところで: サンプル コードを見ると、カスタム ウィンドウ manager.undoManager を document.undoManager に設定しようとしたことがわかります。違いはありませんでした。
うーん。私は気が狂ってしまうと思います。これはとてもシンプルなはずです!明らかな何かが欠けているに違いありません!
インターネットの人々に何か新しい発見はありますか?