将 NSAttributedString 复制到粘贴板
-
24-09-2019 - |
题
对于 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]];
不隶属于 StackOverflow