Kopiere NSAtributedString in UIPasteBoard

8

Wie kopieren Sie einen NSAttributedString in die Zwischenablage , damit der Benutzer ihn einfügen oder programmgesteuert einfügen kann (mit - (void)paste:(id)sender vom UIResponderStandardEditActions-Protokoll).

Ich habe es versucht:

%Vor%

aber dieser Absturz mit:

%Vor%

was zu erwarten ist, weil NSAttributedString kein Eigenschaftslistenwert ist.

Wenn der Benutzer den Inhalt der Zwischenablage in meine App einfügt, möchte ich alle Standards und benutzerdefinierten Attribute der attributierten Zeichenfolge beibehalten.

    
Guillaume 26.09.2012, 11:46
quelle

4 Antworten

9

Ich habe festgestellt, dass, wenn ich (als ein Benutzer der Anwendung) Rich Text von einem UITextView in das Pasteboard kopiert, das Pasteboard zwei Typen enthält:

%Vor%

Darauf basierend habe ich eine passende Kategorie auf UIPasterboard erstellt.
(Mit viel Code aus dieser Antwort ).

Es funktioniert, aber:
Die Konvertierung in das HTML-Format bedeutet, dass ich benutzerdefinierte Attribute verliere. Jede saubere Lösung wird gerne angenommen.

Datei UIPasteboard + AttributedString.h:

%Vor%

Datei UIPasteboard + AttributedString.m:

%Vor%

Nur implementierter Setter. Wenn du den Getter schreiben und / oder auf GitHub setzen willst, sei mein Gast:)

    
Guillaume 26.09.2012 13:45
quelle
8

@ Guillaumes Ansatz mit HTML funktioniert nicht (zumindest in iOS 7.1 Beta 5).

Die sauberere Lösung besteht darin, NSAttributedStrings als RTF (plus Klartext-Fallback) in die Pastenplatine einzufügen:

%Vor%

Swift 2.3

%Vor%

Schnell 3

%Vor%     
Ortwin Gentz 20.02.2014 15:19
quelle
0

Es ist ganz einfach:

%Vor%     
Valentin Shergin 17.11.2016 06:05
quelle
-1

Der Pasteboard-Manager in OSX kann automatisch zwischen einer Vielzahl von Text- und Bildtypen konvertieren.

Bei Rich-Text-Typen würden Sie normalerweise RTF in die Zwischenablage einfügen. Sie können RTF-Darstellung aus einer attributierten Zeichenfolge erstellen und umgekehrt. Siehe "NSAttributedString Application Kit Additions Reference".

Wenn Sie auch Bilder enthalten, verwenden Sie den RTFd anstelle von RTF Flavor.

Ich kenne die MIME-Typen für diese nicht (ich bin an die Carbon Pasteboard API gewöhnt, nicht an Cocoa), aber Sie können zwischen UTIs, Pboard und MIME Typen mit der UTType API konvertieren.

UTI für RTF ist "public.rtf", für RTFd ist es "com.apple.flat-rtfd".

    
Thomas Tempelmann 11.03.2013 21:53
quelle