我看到了将项目添加到粘贴板的方法。我还看到您可以收到有关删除粘贴板项目的通知。但我似乎找不到如何从粘贴板上删除项目(键和值)。如何从粘贴板上删除项目?
问问题
3328 次
2 回答
2
setValue("")
和方法之间的唯一区别removeObject()
是提供的日志UIPasteboard.items
。在功能上,任何一种解决方案都会清除您的条目,并清除相关的字典。
pb.contains(pasteboardTypes: [UIPasteboardName.general.rawValue])
将返回false
。
您可以通过操作字典来删除单个条目,而不是用 替换它""
,这与如何在 viewWillDisappear 上清除/清空粘贴板不同。
选项1
如果要清除所有条目,请使用此选项。pb.items
将登录[]
。
@IBAction func deleteEntirePasteboard(_ sender: AnyObject) {
UIPasteboard.remove(withName: UIPasteboardName(rawValue: pasteboardName()))
}
选项 2
使用它来删除条目及其字典。当所有条目都被清除时,pb.items
也会记录下来。[]
@IBAction func clearUsingRemove(_ sender: AnyObject) {
let pb = pasteBoard()
pb.items = [[String : Any]]()
}
选项 3
这是普遍接受的方法。pb.items
将记录[{}]
,显示一个空字典。虽然pb.containsPasteboardTypes
也将返回 nil,但可以说它不如上面的其他两个选项那么彻底。
@IBAction func clearUsingQuotes(_ sender: AnyObject) {
let pb = pasteBoard()
pb.setValue("", forPasteboardType: UIPasteboardName.general.rawValue)
}
使用此支持代码访问UIPasteboard
上面列出的 3 个解决方案:
func pasteBoard() -> UIPasteboard {
return UIPasteboard(name: UIPasteboardName(rawValue: pasteboardName()),
create: true)!
}
func pasteboardName() -> String {
return "19172176"
}
► 在GitHub 上找到此解决方案,并在Swift Recipes上找到更多详细信息。
于 2015-08-26T21:17:10.723 回答
0
我有一个类似的问题。我需要在不触及其他项目的情况下清理几个条目:
let pasteboard = UIPasteboard.general
pasteboard.items = pasteboard.items.filter{ $0.keys.first != "type.to.be.removed" }
现在使用过滤器闭包中的任何布尔表达式来删除项目。
于 2019-06-20T12:02:07.400 回答