2010-04-05 8 views
6

Nuevo en Cocoa y estoy intentando descubrir cómo copiar un NSAttributedString al cartón. He buscado en los documentos y no estoy seguro si se supone que debo usar NSPasteboardItem o no.Copie NSAttributedString en el cartón

Esto es lo que tengo que copiar un NSString normal:

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

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

¿Cómo se configura un NSAttributedString?

Gracias

+1

Para el equivalente de iOS, mira esta pregunta: http://stackoverflow.com/questions/12601039/copy-nsattributedstring-in-uipasteboard – Guillaume

Respuesta

5

Usted quieren ya sea NSRTFPboardType o NSRTFDPboardType junto con el NSAttributedString RTFFromRange:documentAttributes:/RTFDFromRange:documentAttributes: y setData en la mesa de trabajo.

8

A partir de Snow Leopard, NSAttributedString (cuando se encienda por AppKit) se ajusta a NSPasteboardWriting, por lo que simplemente puede hacer esto:

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

Usted puede send NSArray an arrayWithObject: message si tiene sólo una cadena con atributos que desea poner en el cartón.

[Editar desde el año 2013: O utilice la nueva sintaxis brillante @[ myAttributedString ]. Funciona para cualquier cantidad de objetos, aunque todavía deben cumplir con NSPasteboardWriting en este contexto.]

Esto también se aplica a NSString. Busque en los encabezados de AppKit "NSPasteboardWriting" para encontrar todas las clases de cacao estándar que lo admiten.

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]]; 
Cuestiones relacionadas