全新的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?
由于
答案 0 :(得分:10)
从Snow Leopard开始,NSAttributedString(当由AppKit启动时)符合NSPasteboardWriting,所以你可以这样做:
[pb clearContents];
[pb writeObjects:arrayOfAttributedStrings];
如果您只想在粘贴板上放置一个属性字符串,则可以send NSArray an arrayWithObject:
message。
[从2013年开始编辑:或使用闪亮的新@[ myAttributedString ]
语法。适用于任意数量的对象,尽管在这种情况下它们仍然需要符合NSPasteboardWriting。]
这也适用于NSString。在AppKit标题中搜索“NSPasteboardWriting”,找到支持它的所有标准Cocoa类。
答案 1 :(得分:6)
您需要NSRTFPboardType或NSRTFDPboardType以及粘贴板上的NSAttributedString的RTFFromRange:documentAttributes:
/ RTFDFromRange:documentAttributes:
和setData
。
答案 2 :(得分: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]];