Como copiar texto para a área de transferência / área de transferência com o Swift

184

Estou procurando um exemplo limpo de como copiar texto para a área de transferência do iOS que pode ser usado / colado em outros aplicativos.

O benefício dessa função é que o texto pode ser copiado rapidamente, sem que o texto padrão destaque as funções da cópia tradicional de texto.

Estou assumindo que as classes principais estão UIPasteboard, mas não conseguimos encontrar as áreas relevantes no exemplo de código que elas fornecem .

Garry Law
fonte

Respostas:

449

Se tudo que você quer é texto simples, você pode simplesmente usar a stringpropriedade . É legível e gravável:

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

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

(Ao ler a partir da área de transferência, a documentação do UIPasteboard também sugere que você primeiro verifique hasStrings: "para evitar que o sistema tente desnecessariamente buscar dados antes que eles sejam necessários ou quando os dados não estejam presentes", como ao usar Handoff .)

jtbandes
fonte
Isso pode estar funcionando bem, mas não acontece que o usuário tenha imagens ou arquivos no conteúdo copiado?
victor
UIPasteboard.general.stringtambém trabalha no swift 4.x
spnkr 6/06/19
Como posso copiar fonte com estilo de fonte?
Krunal Nagvadia
57

Como copiar e colar geralmente é feito em pares, essa é uma resposta complementar a uma resposta concisa e boa de @jtbandes. Eu originalmente vim aqui procurando colar.

O iOS facilita isso porque a área de transferência geral pode ser usada como uma variável. Basta pegar e definir UIPasteboard.general.string.

Aqui está um exemplo mostrando os dois sendo usados ​​com um UITextField:

cópia de

UIPasteboard.general.string = myTextField.text

Colar

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

Observe que a string da área de transferência é opcional, portanto, ela deve ser desembrulhada primeiro.

Suragch
fonte
Como posso copiar texto com o estilo da fonte. Então eu posso usar esse estilo de fonte
Krunal Nagvadia
@KrunalNagvadia, Você não pode copiar texto com o estilo da fonte, mas pode obter as informações da fonte myTextField.font. Você pode salvar essas informações separadamente e aplicá-las em outro lugar.
Suragch 1/11/19
ok what Se eu copiar texto do meu aplicativo e colar no WhatsApp ou em qualquer outro aplicativo Dose, ele suporte o estilo?
Krunal Nagvadia 1/11/19
@KrunalNagvadia, Não, o sistema iOS UIPasteboardnão suporta estilo. Você só pode lidar com o estilo em seu próprio aplicativo.
Suragch 1/11/19
7

Copiando texto do aplicativo para a área de transferência:

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

SWIFT 4

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