Pregunta

Encontré algunos problemas al intentar colocar más de una representación de datos en el tablero en el iPhone 3.0.

Lo que intento hacer es poner una representación de datos y una representación de cadena en el cartón. Los datos son mi propio tipo de datos y los uso para copiar y pegar en mi aplicación. La representación de cadena es una forma de copiar y pegar el contenido de mi aplicación como un esquema en otra aplicación (por ejemplo, Mail.app).

    // payload
NSString *pasteboardString = [selectedNode stringRepresentation];
NSDictionary *pasteboardDictionary = [selectedNode nodeAndSubnodesProperties];

// set payload
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = pasteboardString;
[pasteboard setValue:pasteboardDictionary forPasteboardType:MNTNodesPasteboardType];

El código anterior no funciona porque la propiedad de cadena y setValue: forPasteboardType: methode reemplaza la primera representación en el cartón. Intenté addItems: pero no funcionó para mí.

¡Gracias por cualquier ayuda!

¿Fue útil?

Solución

Para responder mi propia pregunta:

Debe usar la propiedad de elementos para colocar múltiples representaciones en el tablero. Para hacerlo, cree un diccionario con cada representación como valor y el tipo de representación como clave. Agregue este diccionario a una matriz, donde cada elemento de la matriz representa un elemento (UIPasteboard admite agregar múltiples elementos a la mesa de trabajo, así como agregar representación múltiple a cada elemento).

Código de ejemplo para un solo elemento con dos representaciones:

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSMutableDictionary *item = [NSMutableDictionary dictionaryWithCapacity:2];
[item setValue:[NSKeyedArchiver archivedDataWithRootObject:pasteboardDictionary] forKey:MNTNodesPasteboardType];
[item setValue:pasteboardString forKey:(NSString *)kUTTypeUTF8PlainText];
pasteboard.items = [NSArray arrayWithObject:item];

No olvide vincular con el marco MobileCoreServices para resolver la constante de UTI.

Otros consejos

esto es lo que funcionó para mí en Swift pega una imagen y un texto juntos en el tablero

let pastebaord = UIPasteboard.generalPasteboard()
let image = UIImage(named: "my-image-file")
pastebaord.addItems([ [UIPasteboardTypeListString[0] as! String : "hello"], [UIPasteboardTypeListImage[0] as! String: image!]]) 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top