如何使用Swift将文本复制到剪贴板/粘贴板


184

我正在寻找一个如何将文本复制到iOS剪贴板的干净示例,然后可以在其他应用程序中使用/粘贴该文本。

此功能的优点是可以快速复制文本,而无需传统文本复制的标准文本突出显示功能。

我假设键类在其中UIPasteboard,但是在它们提供代码示例中找不到相关的区域。


Answers:


446

如果您只需要纯文本,则可以使用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

如何复制具有字体样式的字体?
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或任何其他App Dose中,它会如何支持样式?
Krunal Nagvadia

@KrunalNagvadia,不,iOS系统UIPasteboard不支持样式。您只能在自己的应用程序中处理样式。
Suragch

7

将文本从应用程序复制到剪贴板:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.