Domanda

Ho riscontrato alcuni problemi durante il tentativo di inserire più di una rappresentazione di dati sulla tastiera su iPhone 3.0.

Quello che sto cercando di fare è mettere una rappresentazione dati e una rappresentazione stringa nel pannello di controllo. I dati sono il mio tipo di dati e li uso per copiare e incollare nella mia applicazione. La rappresentazione di stringhe è un modo per copiare e incollare il contenuto della mia applicazione come contorno in un'altra applicazione (ad esempio 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];

Il codice sopra riportato non funziona perché la proprietà stringa e setValue: forPasteboardType: methode sostituiscono la prima rappresentazione sul pannello di montaggio. Ho provato addItems: ma non ha funzionato per me.

Grazie per l'aiuto!

È stato utile?

Soluzione

Per rispondere alla mia domanda:

Devi usare la proprietà items per mettere più rappresentazioni sul pannello di montaggio. Per fare ciò, si crea un dizionario con ciascuna rappresentazione come valore e il tipo di rappresentazione come chiave. Aggiungi questo dizionario a un array, in cui ogni elemento dell'array rappresenta un elemento (UIPasteboard supporta l'aggiunta di più elementi al pannello di montaggio e l'aggiunta di una rappresentazione multipla a ciascun elemento).

Codice di esempio per un singolo elemento con due rappresentazioni:

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

Non dimenticare di collegarti al framework MobileCoreServices per risolvere la costante UTI.

Altri suggerimenti

questo è ciò che ha funzionato per me in Swift incolla un'immagine e un testo insieme sulla tavola

let pastebaord = UIPasteboard.generalPasteboard()
let image = UIImage(named: "my-image-file")
pastebaord.addItems([ [UIPasteboardTypeListString[0] as! String : "hello"], [UIPasteboardTypeListImage[0] as! String: image!]]) 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top