I encountered some issues when trying to put more than one data representation onto the pasteboard on iPhone 3.0.
What I'm trying to do is put a data representation and a string representation onto the pasteboard. The data is my own data type and I use it for copy and paste in my application. The string representation is a way to copy and paste the content of my application as an outline into an other application (for example 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];
The above code doesn't work because the string property and setValue:forPasteboardType: methode replace the first representation on the pasteboard. I tried addItems: but it didn't work for me.
Thank you for any help!
In both iOS and Android, tap and hold on the text you want to copy, then drag the selector lines around all the text you want to copy, and tap Copy. Then tap and hold anywhere where you want to paste the text, and tap Paste.
Cut: Tap Cut or pinch closed with three fingers two times. Copy: Tap Copy or pinch closed with three fingers. Paste: Tap Paste or pinch open with three fingers.
To answer my own question:
You have to used the items property to put multiple representations onto the pasteboard. To do so you create a dictionary with each representation as the value and the representation type as the key. Add this dictionary to an array, where each item in the array represents an item (UIPasteboard supports adding multiple items to the pasteboard as well as adding mutliple representation to each item).
Example code for one single item with two representations:
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];
Don't forget to link with the MobileCoreServices framework to resolve the UTI constant.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With