objective-c - 无法将字符串复制到粘贴板

标签 objective-c macos cocoa

我有一个名为 text 的字符串,在主菜单 xib 文件中,我将复制菜单项与通过观察者调用的操作链接起来。我使用断点验证了该方法确实被调用,但问题是该字符串不是并没有真正复制到粘贴板:

- (void) copy: (NSNotification*) notification
{
    if([[self window]isKeyWindow])
    {
        // It always enters in this block
        NSPasteboard* pb=[NSPasteboard generalPasteboard];
        NSPasteboardItem* item=[[NSPasteboardItem alloc]init];
        [pb clearContents];
        [item setData: [NSKeyedArchiver archivedDataWithRootObject: text] forType: NSPasteboardTypeString];
        [pb writeObjects: [NSArray arrayWithObject: item]];
    }
}

进入 block 后,它会清除粘贴板的所有内容。但是,如果我尝试将复制的内容粘贴到文本编辑中,它不会粘贴任何内容(空字符串),但字符串的长度不为零.
我还尝试检查 writeObjects 的返回值,它返回 YES。

最佳答案

您可以简单地使用:

[pb setString:text forType:NSPasteboardTypeString];

或者,您可能想在 NSPasteboardItem 上使用 setString:forType

关于objective-c - 无法将字符串复制到粘贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547134/

相关文章:

objective-c - 有什么方法可以监控 Mac 上的新应用程序安装事件吗?

objective-c - 如何在 cocoa macosx 中以编程方式创建 View

objective-c - 将秒整数转换为 HH :MM, iPhone

ios - UIView 底边模式

ios - 检测 UIBezierPath 是否可见

macos - NSTableView 中的悬停效果问题

c++ - 无法在 Mac 上使用 Quantlib 运行示例代码

iphone - 我收到警告 : incompatible Objective-C types assigning 'struct NSString *' , 预期为 'struct NSMutableString *'

objective-c - 使用 Scripting Bridge 对我的应用程序进行沙盒处理以发送电子邮件

iphone - 如何以编程方式复制界面生成器中内置的 UIView?