Copia NSAttributedString a la mesa de trabajo
-
24-09-2019 - |
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
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]];