7

对 Cocoa 来说是全新的,我正在尝试弄清楚如何将 NSAttributedString 复制到粘贴板。我查看了文档,不确定是否应该使用 NSPasteboardItem 。

这是我必须复制常规 NSString 的内容:

NSPasteboard *pb = [NSPasteboard generalPasteboard];
NSArray *types = [NSArray arrayWithObjects:NSStringPboardType, nil];
[pb declareTypes:types owner:self];

[pb setString:@"asdfasdf" forType:NSStringPboardType];

如何设置 NSAttributedString?

谢谢

4

3 回答 3

10

从 Snow Leopard 开始, NSAttributedString (由 AppKit 启动时)符合NSPasteboardWriting,因此您可以简单地执行以下操作:

[pb clearContents];
[pb writeObjects:arrayOfAttributedStrings];

如果您只想将一个属性字符串放在粘贴板上,则可以向 NSArray 发送arrayWithObject:消息。

[从 2013 年开始编辑:或使用闪亮的新@[ myAttributedString ]语法。适用于任意数量的对象,尽管在此上下文中它们仍然需要全部符合 NSPasteboardWriting。]

这也适用于 NSString。在 AppKit 头文件中搜索“NSPasteboardWriting”以找到所有支持它的标准 Cocoa 类。

于 2010-04-06T13:56:24.287 回答
6

您需要 NSRTFPboardType 或 NSRTFDPboardType 以及 NSAttributedString 的RTFFromRange:documentAttributes:/RTFDFromRange:documentAttributes:setData粘贴板上。

于 2010-04-05T22:09:09.273 回答
1
NSPasteboard *paste = [NSPasteboard generalPasteboard];  
[paste clearContents];      
[paste declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
NSMutableAttributedString *aString;// init some string
BOOL success =  [paste writeObjects:[NSArray arrayWithObject:aString]];
于 2015-05-28T08:58:45.433 回答