它无法将字符串复制到粘贴板

时间:2012-09-22 19:43:26

标签: objective-c macos cocoa

我有一个名为text的字符串,在主菜单xib文件中我将复制菜单项与通过observer调用的动作相关联。我使用断点验证实际调用了此方法,但问题是字符串isn真的没有复制到粘贴板:

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

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

1 个答案:

答案 0 :(得分:2)

您可以简单地使用:

[pb setString:text forType:NSPasteboardTypeString];

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