在Swift中创建自定义macOS共享服务

在最新版本的macOS中,共享按钮已成为常见的OS功能。 从Finder到Safari的所有内容都具有这些按钮,它们使用相同的标准化,可自定义和可扩展的体验。 我们可以使用NSSharingServicePicker在我们自己的应用程序中轻松使用它们,甚至可以添加自定义服务! 它们的功能类似于使用UIActivityViewController的iOS共享表。

我将演示如何自己使用NSSharingServicePicker ,以及如何使用NSSharingService和相应的委托添加自定义共享操作。 示例应用程序( 末尾提供了完整的示例代码 )将一个简单的“复制文本”添加到剪贴板选项到我们的共享菜单。

连接一个NSSharingServicePicker

Apple仅需几行代码,即可轻松使用它:

采用NSSharingServicePickerDelegate

我们遵循NSSharingServicePickerDelegate并实现了sharingServicePicker ,然后创建了自己的定制服务。

首先,我将共享整个代码,然后将其分解为多个部分。

小调整

在大多数情况下,就是这样。 还有一些其他小事情要注意:

  • 如果使用按钮操作触发NSSharingServicePicker ,则可能会收到有关可通过在按钮.sendAction(on: .leftMouseDown)设置.sendAction(on: .leftMouseDown)来修复的操作的错误。
  • NSSharingService要求您提供共享服务的映像,我建议为此使用xcode资产文件夹

示例项目源代码

如果您想使用此代码查看简单的示例应用程序,可以在此处找到

这篇文章的启示

我目前正在为我的高级项目构建一个菜单栏macOS应用程序,它使您可以立即将文本或代码共享到gist.github.com。 整个代码在我的GitHub上都是开源的,可以在这里找到。

当希望将简单的剪贴板复制功能添加到共享表时,我找不到有关该主题的任何stackoverflow问题或中级文章,因此我决定写我的第一篇文章!

谢谢阅读!