Wie füge ich Rich Text in eine UITextView ein?

Meine App ermöglicht Benutzern das Formatieren von Text in einer UITextView, indem Sie auf einige Formatierungsschaltflächen klicken, mit denen Attribute auf die Eigenschaft attributedText der Textansicht angewendet werden. Ich möchte Benutzern erlauben, ihren formatierten Text aus einer UITextView zu kopieren und in eine andere einzufügen, indem ich das Standard-Pasteboard und das Standard-Menü zum Ausschneiden / Kopieren / Einfügen verwende.

Derzeit wird die Formatierung beibehalten, wenn ich formatierten Text aus einer UITextView kopiere und in eine neue Nachricht in der Mail-App einfüge. Das Kopieren von formatiertem Text erfolgt also automatisch. Wenn ich den formatierten Text jedoch in eine andere UITextView in meiner App einfüge, wird nur der einfache Text angezeigt.

Folgen Sie dem Abschnitt "Einfügen der Auswahl" imTextprogrammierungshandbuch für iOSKonnte ich die Einfügemethode von UITextView überschreiben und den eingefügten Inhalt abfangen:

- (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]);
    }
}

Dies zeigt mir, dass das Pasteboard Inhalte in den folgenden Formaten enthält: com.apple.rtfd, public.rtf, public.text und "Apple Web Archive pasteboard type". Der Wert für den Text ist eine reine Textzeichenfolge, der Wert für die RTF ist eine RTF-Zeichenfolge und die Werte für die beiden Apple-Formate sind NSData.

Hier stecke ich fest. Wie kann ich eines dieser Elemente aus den Pasteboard-Daten in eine zugewiesene Zeichenfolge übersetzen, die für UITextView festgelegt werden soll?

Oder gibt es eine Möglichkeit, UITextView so zu konfigurieren, dass formatierter Text beim Einfügen automatisch akzeptiert wird, genauso wie formatierter Text beim Kopieren automatisch bereitgestellt wird?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage