Jak skopiować tekst do schowka / stołu roboczego za pomocą Swift

184

Szukam czystego przykładu, jak skopiować tekst do schowka na iOS, którego można następnie użyć / wkleić w innych aplikacjach.

Zaletą tej funkcji jest to, że tekst można szybko skopiować, bez standardowych funkcji podświetlania tekstu tradycyjnego kopiowania tekstu.

Zakładam, że są kluczowe klasy UIPasteboard, ale nie mogę znaleźć odpowiednich obszarów w podanym przez nich przykładzie kodu .

Prawo Garry'ego
źródło

Odpowiedzi:

449

Jeśli wszystko, czego chcesz, to zwykły tekst, możesz po prostu użyć stringwłaściwości . Jest zarówno czytelny, jak i zapisywalny:

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

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

(Podczas czytania ze schowka dokumentacja UIPasteboard sugeruje również, że możesz najpierw sprawdzić hasStrings, „aby uniknąć niepotrzebnej próby pobrania danych przez system, zanim będzie on potrzebny lub gdy dane mogą nie być obecne”, na przykład podczas korzystania z funkcji Handoff .)

jtbandes
źródło
Może to działać dobrze, ale czy nie zdarza się, że użytkownik ma obrazy lub pliki w skopiowanej treści?
zwycięzca
UIPasteboard.general.stringdziała również w wersji szybkiej 4.x
spnkr
Jak mogę skopiować czcionkę ze stylem czcionki?
Krunal Nagvadia
57

Ponieważ kopiowanie i wklejanie odbywa się zwykle parami, jest to dodatkowa odpowiedź na dobrą, zwięzłą odpowiedź @jtbandes. Pierwotnie przybyłem tutaj, szukając sposobu wklejenia.

iOS ułatwia to, ponieważ ogólny karton może być używany jak zmienna. Po prostu weź i ustaw UIPasteboard.general.string.

Oto przykład pokazujący, że oba są używane z UITextField:

Kopiuj

UIPasteboard.general.string = myTextField.text

Pasta

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

Zauważ, że łańcuch kartonu jest Opcjonalny, więc najpierw należy go rozpakować.

Suragch
źródło
Jak mogę skopiować tekst ze stylem czcionki. Więc mogę użyć tego stylu czcionki
Krunal Nagvadia
@KrunalNagvadia, Nie możesz kopiować tekstu ze stylem czcionki, ale możesz uzyskać informacje o czcionce za pomocą myTextField.font. Możesz zapisać te informacje osobno i zastosować je gdzie indziej.
Suragch
dobrze, co jeśli skopiuję tekst z mojej aplikacji i wkleję go do WhatsApp lub innej aplikacji Dozujesz styl obsługi?
Krunal Nagvadia
@KrunalNagvadia, Nie, system iOS UIPasteboardnie obsługuje stylizacji. Stylizację możesz obsługiwać tylko we własnej aplikacji.
Suragch
7

Kopiowanie tekstu z aplikacji do schowka:

let pasteboard = UIPasteboard.general
pasteboard.string = employee.phoneNumber
Raj Joshi
źródło
7

SWIFT 4

UIPasteboard.general.string = "TEXT"
Álvaro Agüero
źródło