2013-11-26 4 views
1

Мое приложение позволяет пользователям форматировать текст в UITextView, щелкая некоторые кнопки форматирования, которые применяют атрибуты к атрибуту атрибута text для текстового представления. Я хочу разрешить пользователям копировать форматированный текст из одного UITextView и вставлять его в другое, используя стандартное меню и стандартное меню cut/copy/paste.Как вставить богатый текст в UITextView?

В настоящее время, если я копирую форматированный текст из UITextView и вставляю его в новое сообщение в приложении Mail, форматирование сохраняется - поэтому копирование форматированного текста происходит автоматически. Но если я вставляю форматированный текст в другой UITextView в моем приложении, появляется только обычный текст.

Следуя «вставляя Selection» раздел в Text Programming Guide for 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 для автоматического форматирования текста при вставке, так же как при автоматическом копировании текста форматированного текста?

+2

Шахта работает нормально по умолчанию и принимает вставляемый форматированный текст. Уверены ли вы, что uitextview установлен для обработки насыщенного текста. Вы пытались копировать форматированный текст и вставлять его обратно в тот же uitextview. –

+0

Если я вставляю форматированный текст обратно в тот же текстовый вид, он по-прежнему отображается как обычный текст. – arlomedia

+0

Я хотел иметь возможность иметь некоторые атрибуты, но не все, и более пользовательское поведение вставки/копирования. Ознакомьтесь с некоторыми возможными ценными сведениями: http://stackoverflow.com/a/38211885/1054573 –

ответ

5

Дункан спросил выше: «Уверены, у вас установлен uitextview для обработки насыщенного текста». Я не знал о настройке для этого, но я снова проверил ссылку на UITextView и нашел свойство allowsEditingTextAttributes. Раньше я не использовал это, потому что я предоставлял свои собственные кнопки форматирования и не нуждался в включении параметров Bold/Italic/Underline. Но когда я установил это свойство в YES для моего UITextView, он начал автоматически принимать форматированный текст. Уф!

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