Comment copier du texte dans le presse-papiers / le presse-papier avec Swift

184

Je recherche un exemple clair de la façon de copier du texte dans le presse-papiers iOS qui peut ensuite être utilisé / collé dans d'autres applications.

L'avantage de cette fonction est que le texte peut être copié rapidement, sans les fonctions de mise en évidence de texte standard de la copie de texte traditionnelle.

Je suppose que les classes clés sont dans UIPasteboard, mais je ne peux pas trouver les zones pertinentes dans l' exemple de code qu'elles fournissent .

Garry Law
la source

Réponses:

449

Si tout ce que vous voulez est du texte brut, vous pouvez simplement utiliser la stringpropriété . C'est à la fois lisible et inscriptible:

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

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

(Lors de la lecture à partir du presse-papiers, la documentation UIPasteboard suggère également que vous voudrez peut-être vérifier d'abord hasStrings, "pour éviter que le système tente inutilement de récupérer des données avant qu'elles ne soient nécessaires ou lorsque les données peuvent ne pas être présentes", comme lors de l'utilisation de Handoff .)

jtbandes
la source
Cela peut fonctionner correctement, mais ne se produit-il pas que l'utilisateur ait des images ou des fichiers dans son contenu copié?
victor
UIPasteboard.general.stringfonctionne aussi dans swift 4.x
spnkr
Comment copier une police avec un style de police?
Krunal Nagvadia
57

Étant donné que le copier-coller se fait généralement par paires, il s'agit d'une réponse supplémentaire à @jtbandes, bonne réponse concise. Je suis venu ici à l'origine pour voir comment coller.

iOS rend cela facile car la table de montage générale peut être utilisée comme une variable. Préparez-vous et préparez-vous UIPasteboard.general.string.

Voici un exemple montrant les deux utilisés avec un UITextField:

Copie

UIPasteboard.general.string = myTextField.text

Pâte

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

Notez que la chaîne de la table de montage est facultative, elle doit donc d'abord être déroulée.

Suragch
la source
Comment puis-je copier du texte avec un style de police. Je peux donc utiliser ce style de police
Krunal Nagvadia
@KrunalNagvadia, Vous ne pouvez pas copier du texte avec le style de police, mais vous pouvez obtenir les informations sur la police avec myTextField.font. Vous pouvez enregistrer ces informations séparément et les appliquer ailleurs.
Suragch
OK, que faire si je copie le texte de mon application et le colle dans WhatsApp ou dans une autre application Dose-t-il le style de support?
Krunal Nagvadia
@KrunalNagvadia, Non, le système iOS UIPasteboardne prend pas en charge le style. Vous ne pouvez gérer le style que dans votre propre application.
Suragch
7

Copie du texte de l'application dans le presse-papiers:

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

SWIFT 4

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