So kopieren Sie Text mit Swift in die Zwischenablage / Pasteboard

183

Ich suche nach einem sauberen Beispiel für das Kopieren von Text in die iOS-Zwischenablage, der dann in anderen Apps verwendet / eingefügt werden kann.

Der Vorteil dieser Funktion besteht darin, dass der Text schnell kopiert werden kann, ohne dass die Standardfunktionen zum Hervorheben von Text beim herkömmlichen Kopieren von Text verwendet werden.

Ich gehe davon aus, dass sich die Schlüsselklassen befinden UIPasteboard, kann aber die relevanten Bereiche in dem von ihnen bereitgestellten Codebeispiel nicht finden .

Garry Law
quelle

Antworten:

444

Wenn Sie nur einfachen Text möchten, können Sie einfach die stringEigenschaft verwenden . Es ist sowohl lesbar als auch beschreibbar:

// write to clipboard
UIPasteboard.general.string = "Hello world"

// read from clipboard
let content = UIPasteboard.general.string

(Wenn Sie aus der Zwischenablage lesen , wird in der UIPasteboard-Dokumentation auch empfohlen , zunächst zu überprüfen hasStrings, "um zu vermeiden, dass das System unnötig versucht, Daten abzurufen, bevor sie benötigt werden oder wenn die Daten möglicherweise nicht vorhanden sind", z. B. bei Verwendung von Handoff .)

jtbandes
quelle
Dies mag gut funktionieren, aber kommt es nicht vor, dass der Benutzer Bilder oder Dateien in seinem kopierten Inhalt hat?
Sieger
UIPasteboard.general.stringfunktioniert auch in Swift 4.x
spnkr
Wie kann ich Schriftarten mit Schriftstil kopieren?
Krunal Nagvadia
56

Da das Kopieren und Einfügen normalerweise paarweise erfolgt, ist dies eine ergänzende Antwort auf @jtbandes gute, präzise Antwort. Ich bin ursprünglich hierher gekommen, um zu sehen, wie man einfügt.

iOS macht dies einfach, da das allgemeine Pasteboard wie eine Variable verwendet werden kann. Einfach holen und einstellen UIPasteboard.general.string.

Hier ist ein Beispiel, das zeigt, wie beide mit einem verwendet werden UITextField:

Kopieren

UIPasteboard.general.string = myTextField.text

Einfügen

if let myString = UIPasteboard.general.string {
    myTextField.insertText(myString)
}

Beachten Sie, dass die Pappzeichenfolge optional ist und daher zuerst ausgepackt werden muss.

Suragch
quelle
Wie kann ich Text mit Schriftstil kopieren? Also kann ich diesen Schriftstil verwenden
Krunal Nagvadia
@KrunalNagvadia, Sie können keinen Text mit dem Schriftstil kopieren, aber Sie können die Schriftinformationen mit abrufen myTextField.font. Sie können diese Informationen separat speichern und an einer anderen Stelle anwenden.
Suragch
Okay, was ist, wenn ich Text aus meiner App kopiere und in WhatsApp oder eine andere App einfüge?
Krunal Nagvadia
@KrunalNagvadia, Nein, das iOS-System UIPasteboardunterstützt kein Styling. Sie können das Styling nur in Ihrer eigenen App ausführen.
Suragch
7

Kopieren von Text aus der App in die Zwischenablage:

let pasteboard = UIPasteboard.general
pasteboard.string = employee.phoneNumber
Raj Joshi
quelle
7

SWIFT 4

UIPasteboard.general.string = "TEXT"
Álvaro Agüero
quelle