2009-06-23 6 views
9

Я столкнулся с некоторыми проблемами при попытке помещать более одного представления данных в картон на iPhone 3.0.Копирование и вставка на iPhone с несколькими представлениями данных

То, что я пытаюсь сделать, это представить представление данных и представление строки на картон. Данные - это мой собственный тип данных, и я использую его для копирования и вставки в моем приложении. Строковое представление - способ копирования и вставки содержимого моего приложения в виде контура в другое приложение (например, 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]; 

Приведенный выше код не работает, поскольку свойство строки и SetValue: forPasteboardType: Methode заменить первое представление на монтажном столе. Я попробовал addItems: но это не сработало для меня.

Благодарим за помощь!

ответ

15

Чтобы ответить на мой собственный вопрос:

Вы должны использовали свойство элементов, чтобы поместить несколько представлений на монтажный стол. Для этого вы создаете словарь с каждым представлением как значение и тип представления в качестве ключа. Добавьте этот словарь в массив, где каждый элемент в массиве представляет элемент (UIPasteboard поддерживает добавление нескольких элементов в картон, а также добавление множественного представления к каждому элементу).

Пример кода для одного элемента с двумя представлениями:

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

Не забудьте связать с рамками MobileCoreServices разрешить постоянную ИМП.

-1

это то, что работает для меня в Swift он вставляет как изображение и текст вместе с pastboard

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

 Смежные вопросы

  • Нет связанных вопросов^_^