对于 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?

谢谢

有帮助吗?

解决方案

您想要么NSRTFPboardType或NSRTFDPboardType与粘贴板上的NSAttributedString的RTFFromRange:documentAttributes: / RTFDFromRange:documentAttributes:setData一起。

其他提示

从 Snow Leopard 开始,NSAttributedString(由 AppKit 启动时)符合 NSP粘贴板写作, ,所以你可以简单地这样做:

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

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

[2013 年编辑:或者使用闪亮的新 @[ myAttributedString ] 句法。适用于任意数量的对象,尽管在这种情况下它们仍然需要全部符合 NSPasteboardWriting。]

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

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]];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top