gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:04:55 25 4
gpt4 key购买 nike

我从一开始就开始编写 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 cut:、copy:paste: 方法,因为它们应该为我处理选择。但我认为我在任何地方都没有 NSText 对象!

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

或者我缺少更好的内置支持吗?

非常感谢您收到的任何帮助 - 当然是特定的解决方案,而且还链接到 Cocoa 中文本/单元格/字段处理的背景底漆。

最佳答案

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

答案是,字段编辑器(NSTextView)是编辑单元格时的第一个响应者。它的父类(super class) NSText 是支持 cut:、copy: 和 Paste: 的类。

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

-(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];
}

关于cocoa - 如何从 NSOutlineView 中的 NSTextFieldCell 中剪切和粘贴文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com