2009-06-23 3 views
9

Ich stieß auf einige Probleme beim Versuch, mehr als eine Datendarstellung auf dem Pasteboard auf dem iPhone 3.0 zu platzieren.Kopieren und Einfügen auf dem iPhone mit mehreren Datendarstellungen

Ich versuche, eine Datendarstellung und eine Zeichenfolgendarstellung auf dem Pasteboard zu platzieren. Die Daten sind mein eigener Datentyp und ich verwende sie zum Kopieren und Einfügen in meiner Anwendung. Die Zeichenfolgendarstellung ist eine Möglichkeit, den Inhalt meiner Anwendung als Gliederung in eine andere Anwendung (z. B. Mail.app) zu kopieren und einzufügen.

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

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

Der obige Code funktioniert nicht, weil die String-Eigenschaft und setValue: forPasteboardType: Methode, um die erste Darstellung auf der Montagefläche ersetzen. Ich habe AddItems ausprobiert: aber es hat nicht für mich funktioniert.

Vielen Dank für jede Hilfe!

Antwort

15

Um meine eigene Frage zu beantworten:

Sie haben die Eigenschaft Items verwendet mehrere Darstellungen auf der Montagefläche zu setzen. Dazu erstellen Sie ein Dictionary mit jeder Repräsentation als Wert und dem Darstellungstyp als Schlüssel. Fügen Sie dieses Dictionary zu einem Array hinzu, wobei jedes Element im Array ein Element darstellt (UIPasteboard unterstützt das Hinzufügen mehrerer Elemente zur Pasteboard sowie das Hinzufügen mehrerer Elemente zu jedem Element).

Beispielcode für ein einzelnes Element mit zwei Darstellungen:

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

Vergessen Sie nicht, mit dem MobileCoreServices Rahmen zu verknüpfen die UTI konstant zu lösen.

-1

das ist, was für mich in Swift arbeitete er fügt sowohl ein Bild und Text zusammen mit dem pastboard

let pastebaord = UIPasteboard.generalPasteboard() 
let image = UIImage(named: "my-image-file") 
pastebaord.addItems([ [UIPasteboardTypeListString[0] as! String : "hello"], [UIPasteboardTypeListImage[0] as! String: image!]]) 
Verwandte Themen