在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问题或中级文章,因此我决定写我的第一篇文章!
谢谢阅读!