Pregunta

Las novedades de Cacao y estoy tratando de encontrar la manera de copiar un NSAttributedString a la mesa de trabajo. He mirado en la documentación y no estoy seguro si se supone que debo usar un NSPasteboardItem o no.

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

¿Fue útil?

Solución

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

Otros consejos

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

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

Puede enviar un mensaje de NSArray arrayWithObject: si tiene sólo una cadena con atributos que desea poner en la mesa de trabajo

.

[Editar en el año 2013: O utilice la sintaxis nueva y brillante @[ myAttributedString ]. Obras para cualquier número de objetos, aunque todavía necesitan a todos se ajustan a NSPasteboardWriting en este contexto.]

Esto va para NSString también. Buscar las cabeceras AppKit para “NSPasteboardWriting” para encontrar todas las clases de cacao estándar que lo soportan.

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]];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top