【问题标题】:Share different kinds of items to NSSharingServicePicker?分享不同种类的物品给 NSSharingServicePicker?
【发布时间】:2015-09-02 01:56:06
【问题描述】:

假设我想分享一张图片、一些文本和一个任意文件(例如 plist)。

如果我尝试使用 NSSharingServicePicker,它只会显示可以处理所有三种类型的共享服务。所以它不会因为不支持文本而显示Air Drop,因为文件不会显示Twitter或Facebook,因为文件和文本不会显示Acorn。

我想分享每项服务可用的任何内容(这样 Acorn 将只获得图像,而 Air Drop 将获得文件和图像,而 Mail 和 Messages 将获得这三者。

有没有办法使用 NSSharingServicePicker 来做到这一点?

我真的不想求助于实现我自己的选择器、处理所有共享类型并自己完成所有工作(包括最近的列表和更多...选项)。

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    您可以使用委托回调来增加服务列表吗?

    您可以使用 sharingServices(forItems: [Any]) -> [NSSharingService] 提前获取对所需服务的引用,并一次将一种类型传递给多个调用,然后使用委托将您的服务列表填充到选择器中。

    我预见到的唯一症结(没有尝试,抱歉)是一旦选择了一项服务,我想知道哪种类型的项目将被传递给它。

    编辑:原始建议:

    您可能必须使用委托方法 func sharingServicePicker(_ sharingServicePicker: NSSharingServicePicker, didChoose service: NSSharingService?) 自己调用服务,并使用正确的 数据类型,并将某些内容传递给NSSharingServicePicker 最初肯定会失败。

    我试图通过此委托方法在服务上调用perform,但内部发生了崩溃。 :/

    /编辑

    来自NSSharingServicePickerDelegate 文档:

    func sharingServicePicker(NSSharingServicePicker, sharingServicesForItems: [Any], proposedSharingServices: [NSSharingService]) -> [NSSharingService]

    调用以允许代理在共享服务选择器显示之前准确自定义显示在共享服务选择器中的内容。

    委托可以重新排序、删除默认服务或添加自定义 提供拣货员之前的服务。可以添加自定义 通过改变建议的SharingServices 数组并添加新的服务 NSSharingService 实例。

    以下是一个例子:

        NSMutableArray *sharingServices = [proposedServices mutableCopy];
        NSSharingService * customService = [[[NSSharingService alloc]   initWithTitle:@"Service Title"
                                                                        image:image alternateImage:alternateImage
                                                                        handler:^{
                                                                            [self doCustomServiceWithItems:items];
                                           }] autorelease];
        [sharingServices addObject:customService];
        return [sharingServices autorelease];
    

    可用性

    macOS 10.8+

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2020-11-14
      • 2017-09-27
      相关资源
      最近更新 更多