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 .


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 .)


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.