2010-04-05 91 views
6

Cocoa的新品牌,我試圖弄清楚如何將NSAttributedString複製到粘貼板。我查看了文檔,並不確定是否應該使用NSPasteboardItem。將NSAttributedString複製到粘貼板

這是我必須複製正規的NSString:

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

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

如何設置一個NSAttributedString?

感謝

+1

對於iOS等價物,請看這個問題:http://stackoverflow.com/questions/12601039/copy-nsattributedstring-in-uipasteboard – Guillaume 2012-09-27 09:50:49

回答

5

你想要麼NSRTFPboardType或NSRTFDPboardType沿NSAttributedString的RTFFromRange:documentAttributes:/RTFDFromRange:documentAttributes:setData粘貼板上。

8

雪豹,NSAttributedString(在按了AppKit電)符合NSPasteboardWriting,所以你可以簡單地這樣做的:

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

您可以send NSArray an arrayWithObject: message如果你只有一個屬性串要穿上紙板。

[從2013年開始編輯:或使用閃亮的新@[ myAttributedString ]語法。適用於任意數量的對象,但它們仍然需要在此上下文中全部符合NSPasteboardWriting。]

這也適用於NSString。在AppKit頭文件中搜索「NSPasteboardWriting」以查找所有支持它的標準Cocoa類。

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]]; 
相關問題