Paste formatierter Text, keine Bilder oder HTML

Ich versuche, das Pasteboard-Verhalten der iOS Pages- und Keynote-Apps zu emulieren. Kurz gesagt, das Einfügen der grundlegenden NSAttributedString-Textformatierung (d. H. BIU) in eine UITextView, jedoch nicht in Bilder, HTML usw. ist möglich.

VERHALTEN ZUSAMMENFASSUNG

Wenn Sie formatierten Text aus der Notes-App, Evernote oder Text und Bilder von einer Website kopieren, wird von Pages nur die einfache Textzeichenfolge eingefügt.Wenn Sie formatierten Text aus Pages oder Keynote kopieren, wird der formatierte Text an einer anderen Stelle in Pages, Keynote usw. eingefügt.Eine unerwünschte, aber möglicherweise zu beachtende Konsequenz ist, dass weder Notes App noch Evernote formatierten Text einfügen, der von Pages oder Keynote kopiert wurde. Ich spekuliere, dass die Diskrepanz zwischen Apps die Verwendung von NSAttributedStrings im Vergleich zu HTML ist?

Wie wird das erreicht? Unter Mac OS können Sie anscheinend Beauftragen Sie das Pasteboard, verschiedene Typen zurückzugebenassen Sie @ von sich aus sowohl einen Rich-Text als auch eine Zeichenfolgendarstellung bereitstellen und verwenden Sie den bevorzugten Rich-Text. Leider scheint es die readObjectsForClasses für iOS nicht zu geben. Das heißt, ich kann über das Protokoll sehen, dass iOS eine RTF-bezogene Art von Pasteboard hat, Danke an diesen Beitrag. Ich kann jedoch keine Möglichkeit finden, eine NSAttributedString-Version von Pasteboard-Inhalten anzufordern, damit ich sie für das Einfügen priorisieren kann.

HINTERGRUN

Ich habe eine App, die es dem Benutzer ermöglicht, Text in UITextViews grundlegend durch NSAttributedString zu formatieren (d. H. Fett, kursiv, unterstrichen). Benutzer möchten Text aus anderen Apps kopieren (z. B. Webseite in Safari, Text in Notes-App) und in eine UITextView in meiner App einfügen. Wenn ich zulasse, dass Pasteboard als Standard verwendet wird, werden möglicherweise Hintergrundfarben, Bilder, Schriftarten usw. angezeigt, für die meine App nicht vorgesehen ist. Das folgende Beispiel zeigt Text, wie kopierter Text mit einer Hintergrundfarbe aussieht, wenn er in UITextView meiner App eingefügt wird.

Ich kann 1 durch Unterklassen von UITextView @ überwind

- (void)paste:(id)sender
{
    UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
    NSString *string = pasteBoard.string;
    NSLog(@"Pasteboard string: %@", string);
    [self insertText:string];
}

Die unbeabsichtigte Folge ist, dass die Formatierung von Text, der aus meiner App kopiert wurde, nicht mehr beibehalten werden kann. Benutzer möchten möglicherweise Text aus einer UITextView in meiner App kopieren und in eine andere UITextView in meiner App einfügen. Sie erwarten, dass die Formatierung (d. H. Fett, kursiv, unterstrichen) beibehalten wird.

insicht und Vorschläge erwünsch

Antworten auf die Frage(4)

Ihre Antwort auf die Frage