Как скопировать текст в буфер обмена / вставить в Swift


184

Я ищу чистый пример того, как скопировать текст в буфер обмена iOS, который затем может быть использован / вставлен в другие приложения.

Преимущество этой функции заключается в том, что текст может быть скопирован быстро, без стандартных функций выделения текста традиционного копирования текста.

Я предполагаю, что ключевые классы находятся в UIPasteboard, но не могут найти соответствующие области в примере кода, который они предоставляют .


Ответы:


449

Если все, что вам нужно, это простой текст, вы можете просто использовать stringсвойство . Это и для чтения и для записи:

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

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

(При чтении из буфера обмена документация UIPasteboard также предлагает вам сначала проверить hasStrings, «чтобы система не вызывала ненужных попыток извлечения данных до того, как она понадобится, или когда данные могут отсутствовать», например, при использовании Handoff .)


Это может работать нормально, но не случается ли так, что у пользователя есть скопированные изображения или файлы?
победитель

UIPasteboard.general.stringтоже работает в swift 4.x
spnkr

Как я могу скопировать шрифт со стилем шрифта?
Крунал Нагвадия

57

Поскольку копирование и вставка обычно выполняются парами, это дополнительный ответ на хороший и краткий ответ @jtbandes. Я изначально пришел сюда, чтобы посмотреть, как вставить.

iOS делает это легко, потому что общий монтажный щит можно использовать как переменную. Просто возьми и установи UIPasteboard.general.string.

Вот пример, показывающий, как оба используются с UITextField:

копия

UIPasteboard.general.string = myTextField.text

Вставить

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

Обратите внимание, что строка в монтажном столе является необязательной, поэтому сначала ее нужно развернуть.


Как я могу скопировать текст со стилем шрифта. Так что я могу использовать этот стиль шрифта
Krunal Nagvadia

@KrunalNagvadia, Вы не можете копировать текст со стилем шрифта, но вы можете получить информацию о шрифте с myTextField.font. Вы можете сохранить эту информацию отдельно и применить ее в другом месте.
Suragch

Хорошо, что, если я скопирую текст из моего приложения и вставлю в WhatsApp или любое другое приложение. Поддерживает ли он стиль поддержки?
Крунал Нагвадия

@KrunalNagvadia, нет, система iOS UIPasteboardне поддерживает стилизацию. Вы можете обрабатывать стили только в своем приложении.
Suragch

7

Копирование текста из приложения в буфер обмена:

let pasteboard = UIPasteboard.general
pasteboard.string = employee.phoneNumber

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.