可可:将响应(复制:,粘贴:等)转发到响应者链

时间:2014-08-18 16:58:58

标签: cocoa nsresponder responder-chain

我有一个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:,但我正在寻找正确的方法这样做。

非常感谢提前!

0 个答案:

没有答案