、などNSOutlineView
を実装するサブクラスがあります。また、サブクラスはこれらの同じメソッドを実装します。copy:
paste:
cut:
NSDocument
アウトライン ビューがレスポンダー チェーン (ファースト レスポンダーまたはその親ビュー) にある場合、すべてのコピー/貼り付けイベントはNSOutlineView
サブクラスによってインターセプトされます。私が望むのは、コンテキストに応じて、これらのメッセージの一部をキャッチするか、それらを伝播させてNSDocument
サブクラスにキャッチさせることです。
私が欲しいのは基本的に次のとおりです。
- (void)copy:(id)sender
{
// If copy paste is enabled
if ([self isCopyPasteEnabled]) {
[[NSPasteboard generalPasteboard] clearContents];
[[NSPasteboard generalPasteboard] writeObjects:self.selectedItems];
return;
}
// If copy paste is disabled
// ... forward copy: message to the next responder,
// up to the NSDocument or whatever
}
私はすでに多くのトリックを試しましたが、どれも成功しませんでした:
[[self nextResponder] copy:sender]
次のレスポンダーが実装しない可能性があるため、機能しませんcopy:
[super copy:sender]
ここでも同じ、スーパーは実装されていませんcopy:
[NSApp sendAction:anAction to:nil from:sender]
これは、最初の応答者にアクションを送信するのに適しています。アクション内で使用する場合
copy:
確かに、応答するもの、または現在のドキュメントを直接呼び出すものが見つかるまで、レスポンダー チェーンを手動でループすることもできますがcopy:
、それを行う正しい方法を探しています。
よろしくお願いします!