【问题标题】:Disable Universal Clipboard temporarily暂时禁用通用剪贴板
【发布时间】:2019-07-13 14:42:08
【问题描述】:

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)或其他人可能知道的东西。 :)

干杯

【问题讨论】:

    标签: ios macos clipboard nspasteboard


    【解决方案1】:

    是的,通用粘贴板适用于所有应用,但 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
    

    【讨论】:

    • 谢谢。如果您不想与其他应用程序共享粘贴板,这是一个很好的解决方案。就我而言,我想与其他应用程序共享粘贴板,但不想与使用通用剪贴板的其他设备共享。如果有人对此有解决方案,请告诉我们。 :)
    • 那你应该从一开始就这么说。是的,有一个解决方案。我将编辑我的答案,但您也应该编辑您的问题。 ;)
    • 这就是为什么我说我要使用通用粘贴板。 :) 感谢更新。我不敢相信我没有偶然发现这个正是我正在寻找的功能。
    • 这就是 SO 存在的原因,以防万一我们想念某事或某人。 ;)
    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    相关资源
    最近更新 更多