清空UIPasteBoard

4
假设已经复制了3个字符串到UIPasteBoard中:
UIPasteboard.generalPasteboard().string="hello"
UIPasteboard.generalPasteboard().string="world"
UIPasteboard.generalPasteboard().string="!"

我使用UIPasteboard.generalPasteboard().string=""

这会清空剪贴板吗?是否有类似于NSPasteBoard的clearContents()函数的UIPasteBoard函数?


https://dev59.com/wGXWa4cB1Zd3GeqPJQ8K#11211203 - Darko
1个回答

12
如果你知道你的程序是唯一操作该特定粘贴板的,那么将 string 属性设置为 "" 将有效地清除粘贴板。在 Playground 中可以很容易地测试这一点。
var pb = UIPasteboard.generalPasteboard()
pb.string = "hello"
pb.string
pb.items
pb.string = ""
pb.string   
pb.items

输出

<UIPasteboard: 0x7fed6bd0a750>
<UIPasteboard: 0x7fed6bd0a750>
"hello"
[["public.utf8-plain-text": "hello"]]
<UIPasteboard: 0x7fed6bd0a750>
nil
[[:]]

请注意,UIPasteboard的string属性是指第一个类型为字符串的剪切板项目的简写。所有类型为字符串的项目都可以通过strings属性访问。

所有基础剪贴板项目都被建模在items属性中,它是一个类型为[String: AnyObject]的字典数组。每个字典包含键中对象的类型信息和值中的剪贴板值。

由于您正在使用系统范围的generalPasteboard,它也可以被其他程序操纵,因此,要从剪贴板中清除所有项目,您应该使用

UIPasteboard.generalPasteboard().items = []

如果您在内部应用程序中使用剪贴板,最好创建一个内部剪贴板,而不是使用系统范围的generalPasteboard。请参见pasteboardWithUniqueName()


谢谢Teemu。generalPasteboard是我需要的,这样其他应用程序也会使用它,但我只对从pasteboard中清除字符串感兴趣。您是说我的解决方案将清除所有存储的字符串,但不包括Ints或图像?而您提出的解决方案将清除所有内容? - Do2
3
不,你的解决方案只能清除第一个剪贴板字符串项目。如果你想清除所有字符串,可以尝试使用pb.strings = [] - Teemu Kurppa
这个解决方案将清除 UIPasteboard.general.strings。在 playground 中尝试一下吧。swift import UIKit UIPasteboard.general.strings = ["this", "is", "a", "test"] print("UIPasteboard.general.strings:", UIPasteboard.general.strings?.description ?? "empty") print("UIPasteboard.general.string:", UIPasteboard.general.string?.description ?? "blank") UIPasteboard.general.items = [] print(UIPasteboard.general.strings?.description ?? "empty") - Popmedic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接