Как скопировать текст в буфер обмена / монтажный стол с помощью Swift

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

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

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


person Garry Law    schedule 10.07.2014    source источник


Ответы (5)


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

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

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

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

person jtbandes    schedule 10.07.2014
comment
Это может работать нормально, но разве не бывает, что у пользователя есть изображения или файлы в скопированном контенте? - person victor; 10.01.2017
comment
UIPasteboard.general.string также работает в Swift 4.x - person spnkr; 06.06.2019
comment
Как я могу скопировать шрифт со стилем шрифта? - person Krunal Nagvadia; 14.11.2019
comment
Это круто - person hbtpoprock; 21.03.2021

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

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

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

Копировать

UIPasteboard.general.string = myTextField.text

Вставить

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

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

person Suragch    schedule 08.06.2016
comment
Как я могу скопировать текст со стилем шрифта. Так что я могу использовать этот стиль шрифта - person Krunal Nagvadia; 01.11.2019
comment
@KrunalNagvadia, вы не можете скопировать текст со стилем шрифта, но вы можете получить информацию о шрифте с помощью myTextField.font. Вы можете сохранить эту информацию отдельно и применить ее где-нибудь еще. - person Suragch; 01.11.2019
comment
хорошо, что, если я скопирую текст из своего приложения и вставлю его в WhatsApp или в любое другое приложение. Поддерживает ли он стиль? - person Krunal Nagvadia; 01.11.2019
comment
@KrunalNagvadia, Нет, система iOS UIPasteboard не поддерживает стили. Вы можете обрабатывать стили только в собственном приложении. - person Suragch; 01.11.2019
comment
Согласно Apple Docs: не используйте UIPasteboard.general.string, чтобы определить, есть ли монтажный стол содержит строковые данные. Вместо этого используйте свойство hasStrings. - person Eric33187; 14.04.2021

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

let pasteboard = UIPasteboard.general
pasteboard.string = employee.phoneNumber
person Raj Joshi    schedule 18.04.2017

SWIFT 4

UIPasteboard.general.string = "TEXT"
person Álvaro Agüero    schedule 29.04.2019

в Swift 5 я могу копировать текст в буфер обмена, используя

UIPasteboard.general.string = "Hello world"

затем вы можете вставить текст в любое место вашего устройства

person Menon Hasan    schedule 03.03.2021