Как вставить форматированный текст в 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, он начал автоматически принимать форматированный текст. Уф!

Другие вопросы по тегам