如何从NSOutlineView中的NSTextFieldCell中剪切和粘贴文本

我从一开始就编写了iOS,但是对于Cocoa来说是新的,所以请温柔!

我有一个NSOutlineView,并从主菜单实现剪切/复制/粘贴,以剪切/复制/粘贴选定的行。

现在我还想让用户在NSTextFieldCell中选择一些文本,复制它,将光标放在不同的NSTextFieldCell中,然后粘贴它。

我已经设法发现用户正在单元格内部工作,通过将BOOL设置为:

- (BOOL)outlineView:(NSOutlineView *)anOutlineView shouldEditTableColumn:(NSTableColumn*)aTableColumn item:(id)anItem

并在我的编辑结束通知中取消设置,设置如下:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editingDidEnd:)
                                                 name:NSControlTextDidEndEditingNotification object:nil];

这似乎工作正常。

然后,在剪切,复制,粘贴操作中,我可以检查BOOL并做正确的事情 - 如果用户不在单元格内复制整行,并在用户在单元格内工作时复制文本。

然而,当用户在单元格内工作时,我无法知道如何获得我需要的东西。

我考虑过使用NSText剪切,复制:粘贴:方法,因为他们应该为我处理选择。 但我不认为我在任何地方都有NSText对象!

或者,我需要能够从我的NSTextFieldCell中读取选定的文本,保存它,然后发现要粘贴到的单元格中的插入点,然后粘贴。

还是有更好的内置支持,我错过了?

感谢任何帮助 - 当然有特定的解决方案,但也可链接到可可中的文本/单元格/字段处理的背景引用。


一如既往,我在发布后立即找到解决方案!

答案是,当编辑单元格时,字段编辑器NSTextView是第一个响应者。 它的超类NSText支持剪切:复制:粘贴:。

所以我的“单元格编辑”版本的剪切复制粘贴命令如下所示:

-(void)pasteTextToCell:(id)sender {

    NSTextView* fieldEditor = (NSTextView*)[[appDelegate mainWindow] firstResponder];
    [fieldEditor paste:sender];
}

-(void)copyTextFromCell:(id)sender {

    NSTextView* fieldEditor = (NSTextView*)[[appDelegate mainWindow] firstResponder];
    [fieldEditor copy:sender];
}

-(void)deleteTextFromCell:(id)sender {

    NSTextView* fieldEditor = (NSTextView*)[[appDelegate mainWindow] firstResponder];
    [fieldEditor cut:sender];
}
链接地址: http://www.djcxy.com/p/85209.html

上一篇: How do I cut and paste text from within a NSTextFieldCell in an NSOutlineView

下一篇: NSTableView and data validation?