Como colar rich text em um UITextView?
Meu aplicativo permite que os usuários formatem texto em um UITextView clicando em alguns botões de formatação que aplicam atributos à propriedade assignedText da exibição de texto. Eu quero permitir que os usuários copiem o texto formatado de um UITextView e cole-o em outro usando o menu de recorte padrão e o menu padrão de recortar / copiar / colar.
Atualmente, se eu copiar texto formatado de um UITextView e colá-lo em uma nova mensagem no aplicativo Mail, a formatação será preservada - portanto, a cópia do texto formatado está acontecendo automaticamente. Mas se eu colar o texto formatado em outro UITextView no meu aplicativo, apenas o texto simples aparecerá.
Seguindo a seção "Colando a seleção" noGuia de programação de texto para iOS, Eu pude substituir o método paste do UITextView e interceptar o conteúdo colado:
- (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]);
}
}
Isso mostra que o papelão contém conteúdo nos seguintes formatos: com.apple.rtfd, public.rtf, public.text e "tipo de quadro de cópia do Apple Web Archive". O valor para o texto é uma string de texto simples, o valor para o rtf é uma string RTF e os valores para os dois formatos da Apple são NSData.
É aqui que estou preso. Como posso traduzir um desses itens dos dados de pasteboard para uma string atribuída para definir o UITextView?
Ou melhor ainda, existe uma maneira de configurar o UITextView para aceitar texto formatado automaticamente ao colar, da mesma forma que ele fornece texto formatado automaticamente ao copiar?