Як скопіювати текст у буфер обміну / картону за допомогою 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працює в стрімкому 4.x теж
spnkr

Як можна скопіювати шрифт у стилі шрифту?
Krunal Nagvadia

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. Ви можете зберегти цю інформацію окремо та застосувати її десь в іншому місці.
Сурагч

добре, що якщо я скопіюю текст із свого додатка і вставляю в WhatsApp або будь-який інший додаток Dose стилю підтримки?
Krunal Nagvadia

@KrunalNagvadia, Ні, система iOS UIPasteboardне підтримує стилізацію. Ви можете керувати стилем лише у власному додатку.
Сурагч

7

Копіювання тексту з програми в буфер обміну:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.