2

我看到了将项目添加到粘贴板的方法。我还看到您可以收到有关删除粘贴板项目的通知。但我似乎找不到如何从粘贴板上删除项目(键和值)。如何从粘贴板上删除项目?

4

2 回答 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 回答