Как вставить форматированный текст в UITextView?
Мое приложение позволяет пользователям форматировать текст в UITextView, нажимая некоторые кнопки форматирования, которые применяют атрибуты к свойству attributetedText текстового представления. Я хочу позволить пользователям копировать их форматированный текст из одного UITextView и вставлять его в другой, используя стандартный монтажный картон и стандартное меню вырезать / копировать / вставить.
В настоящее время, если я копирую форматированный текст из UITextView и вставляю его в новое сообщение в приложении "Почта", форматирование сохраняется, поэтому копирование форматированного текста происходит автоматически. Но если я вставлю форматированный текст в другой UITextView в моем приложении, появится только простой текст.
Следуя разделу "Вставка выделения" в Руководстве по программированию текста для iOS, я смог переопределить метод вставки UITextView и перехватить вставленный контент:
- (void)paste:(id)sender {
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSLog(@"types available: %@", [pasteboard pasteboardTypes]);
for (NSString *type in [pasteboard pasteboardTypes]) {
NSLog(@"type %@ (%@): %@", type, NSStringFromClass([[pasteboard valueForPasteboardType:type] class]), [pasteboard valueForPasteboardType:type]);
}
}
Это показывает, что в монтажном столе содержится содержимое в следующих форматах: com.apple.rtfd, public.rtf, public.text и "Тип монтажного листа Apple Web Archive". Значением для текста является обычная текстовая строка, значением для rtf является строка RTF, а значениями для двух форматов Apple являются NSData.
Вот где я застрял. Как я могу перевести один из этих элементов из данных монтажной панели в атрибутивную строку для установки в UITextView?
Или, что еще лучше, есть ли способ настроить UITextView для автоматического принятия форматированного текста при вставке, так же, как он автоматически предоставляет форматированный текст при копировании?
1 ответ
Дункан спросил выше: "Вы уверены, что у вас настроен uitextview для обработки форматированного текста". Я не знал о настройке для этого, но я снова проверил ссылку на класс UITextView и нашел allowsEditingTextAttributes
имущество. Я не использовал это раньше, потому что предоставлял свои собственные кнопки форматирования, и мне не нужно было включать системные параметры Bold/Italic/Underline. Но когда я установил для этого свойства значение YES для UITextView, он начал автоматически принимать форматированный текст. Уф!