Скопируйте NSAttributedString в монтажную панель - PullRequest
7 голосов
/ 06 апреля 2010

Совершенно новый для Какао, и я пытаюсь выяснить, как скопировать NSAttributedString в монтажную панель. Я просмотрел документы и не уверен, должен ли я использовать NSPasteboardItem или нет.

Вот что мне нужно скопировать обычную строку NSString:

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

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

Как мне установить NSAttributedString?

Спасибо

Ответы [ 3 ]

10 голосов
/ 06 апреля 2010

Начиная со Snow Leopard, NSAttributedString (при включении AppKit) соответствует NSPasteboardWriting , так что вы можете просто сделать это:

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

Вы можете отправить NSArray сообщение arrayWithObject: , если у вас есть только одна атрибутивная строка, которую вы хотите поместить в монтажный картон.

[Правка 2013 года: или используйте новый синтаксис @[ myAttributedString ]. Работает для любого количества объектов, хотя в этом контексте все они должны соответствовать NSPasteboardWriting.]

Это относится и к NSString. Найдите в заголовках AppKit «NSPasteboardWriting», чтобы найти все стандартные классы Какао, которые его поддерживают.

6 голосов
/ 06 апреля 2010

Требуется либо NSRTFPboardType, либо NSRTFDPboardType вместе с NSAttributedString RTFFromRange:documentAttributes: / RTFDFromRange:documentAttributes: и setData на монтажном столе.

1 голос
/ 28 мая 2015
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]];
...