暂时禁用通用剪贴板

时间:2019-07-05 13:51:44

标签: ios macos clipboard nspasteboard

iOS和macOS具有称为“通用剪贴板”的内置功能,可使用iCloud在设备之间同步剪贴板的内容。

NSPasteboard.general.clearContents()
NSPasteboard.general.writeObjects("Test 123") 

我想在Cocoa应用程序的通用粘贴板上写一些东西,以便在不与其他iCloud设备同步的情况下在应用程序之间共享。我找不到解决方法。实际上,我认为如果没有用户在设置中手动禁用它,这是不可能的。

文档说:

  

可通过通用类方法获得的通用粘贴板自动参与macOS 10.12和更高版本以及iOS 10.0和更高版本中的通用剪贴板功能。没有用于与此功能交互的macOS API。   https://developer.apple.com/documentation/appkit/nspasteboard

但是也许有一种解决方法,一个私有API(我知道没有App Store)或其他人可能知道的东西。 :)

欢呼

1 个答案:

答案 0 :(得分:3)

是的,常规粘贴板可用于所有应用程序,但NSPasteboard可用于创建专用粘贴板。您所需要做的就是:

let myPasteboard = NSPasteboard(name: NSPasteboard.Name("mypasteboard"))

您可以查看文档here。因此,您可以将粘贴的项目复制到私有粘贴板上,然后,仅在需要时,才可以将数据传输到常规粘贴板上,并使数据可用于所有应用程序。

但是,如果要防止在设备之间共享通用剪贴板,您要做的就是:

let generalPasteboard = NSPasteboard.general

// current host only
generalPasteboard.prepareForNewContents(with: .currentHostOnly)
// write here to the pasteboard