如何在UIActivityViewController中添加自定义条目

时间:2017-01-10 18:04:39

标签: swift uiactivityviewcontroller

当我从iPhone或iPad邮件应用程序打开附件时,有一个弹出窗口可以将文件传输到第三方应用程序。

此iOS弹出窗口称为UIActivityViewController。

我想在这个弹出窗口中添加我自己的iOS应用程序(用swift编写),我不知道该怎么办...

由于

1 个答案:

答案 0 :(得分:1)

我相信你会问两件事。

<强> UIActivityViewController:

这是我的应用程序中的代码。

let vc = UIActivityViewController(activityItems: [shareImage], applicationActivities: [])
vc.excludedActivityTypes =  [
    UIActivityType.airDrop,
    UIActivityType.assignToContact,
    UIActivityType.addToReadingList,
    //UIActivityType.copyToPasteboard,
    //UIActivityType.mail,
    //UIActivityType.message,
    //UIActivityType.openInIBooks,
    //UIActivityType.postToFacebook,
    //UIActivityType.postToFlickr,
    UIActivityType.postToTencentWeibo,
    //UIActivityType.postToTwitter,
    UIActivityType.postToVimeo,
    UIActivityType.postToWeibo,
    UIActivityType.print,
    //UIActivityType.saveToCameraRoll
]
present(vc,
        animated: true,
        completion: nil)
vc.popoverPresentationController?.sourceView = self.view
vc.completionWithItemsHandler = {(activity, success, items, error) in
}

注意 excludedActiviyTypes 代码。我的应用程序是一个图像效果应用程序,所以我在弹出窗口中注释了我希望拥有的东西 - 微博,打印,assignToContact,ReadingList,Vimeo和腾讯微博。这就是事情 - 我保留了完整的活动清单以供快速参考。 (我从来没有在ADC上找到它并最终通过使用代码完成来获得它。)

UIActivityType是一个扩展的结构,所以如果你想通过这种方式使用它,我认为你必须(1)子类UIActivityViewController,(2)将你自己的扩展写入UIActivityType,并且(3)提供使用上面未列出的服务所需的任何/所有代码。

我认为您正在寻找Document Provider。要么是,要么Universal - sometimes called Deep - Linking。 (这些链接指向Apple文档以供使用。)

我显然已经使用过UIActivityiewController,但还没有(还)对其他两个有任何需求。

如果您对设置UIActivityViewController有疑问,请在评论中发布。如果其他人有办法以我描述的方式“延伸”它,请告诉我,我将删除此答案。