Cara menyalin teks ke clipboard / papan tulis dengan Swift

184

Saya mencari contoh bersih tentang cara menyalin teks ke papan klip iOS yang kemudian dapat digunakan / ditempel di aplikasi lain.

Manfaat dari fungsi ini adalah teks dapat disalin dengan cepat, tanpa fungsi penyorotan teks standar dari penyalinan teks tradisional.

Saya mengasumsikan bahwa kelas-kelas utama ada UIPasteboard, tetapi tidak dapat menemukan area yang relevan dalam contoh kode yang mereka berikan .

Hukum Garry
sumber

Jawaban:

449

Jika semua yang Anda inginkan adalah teks biasa, Anda bisa menggunakan stringproperti . Dapat dibaca dan ditulis:

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

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

(Saat membaca dari clipboard, dokumentasi UIPasteboard juga menyarankan Anda mungkin ingin memeriksa dulu hasStrings, "untuk menghindari menyebabkan sistem mencoba mengambil data sebelum dibutuhkan atau ketika data mungkin tidak ada", seperti ketika menggunakan Handoff .)

jtbandes
sumber
Ini mungkin berfungsi dengan baik, tetapi tidakkah hal itu terjadi bahwa pengguna memiliki gambar atau file dalam konten yang disalin?
pemenang
UIPasteboard.general.stringbekerja dengan cepat 4.x juga
spnkr
Bagaimana saya bisa menyalin font dengan gaya font?
Krunal Nagvadia
57

Karena menyalin dan menempel biasanya dilakukan berpasangan, ini adalah jawaban tambahan untuk @jtbandes jawaban yang baik dan ringkas. Saya awalnya datang ke sini mencari cara menempel.

iOS membuat ini mudah karena papan tulis umum dapat digunakan seperti variabel. Dapatkan dan atur UIPasteboard.general.string.

Berikut adalah contoh yang menunjukkan keduanya digunakan dengan UITextField:

Menyalin

UIPasteboard.general.string = myTextField.text

Tempel

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

Perhatikan bahwa string papan tulis adalah Opsional, sehingga harus dibuka dulu.

Suragch
sumber
Bagaimana saya bisa menyalin teks dengan gaya font. Jadi saya bisa menggunakan font Style
Krunal Nagvadia
@ KwrunNagvadia, Anda tidak dapat menyalin teks dengan gaya font, tetapi Anda bisa mendapatkan info font dengan myTextField.font. Anda dapat menyimpan informasi itu secara terpisah dan menerapkannya di tempat lain.
Suragch
oke bagaimana jika saya menyalin teks dari aplikasi saya dan tempel ke whatsapp atau aplikasi lain apa pun itu gaya dukungan
Krunal Nagvadia
@KrunalNagvadia, Tidak, sistem iOS UIPasteboardtidak mendukung gaya. Anda hanya dapat menangani gaya dalam aplikasi Anda sendiri.
Suragch
7

Menyalin teks dari aplikasi ke clipboard:

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

SWIFT 4

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