我不理解UIActivityViewController,或者当前的实现很糟糕?

我试图移动我的应用程序使用UIActivityViewController,而不是UIActionSheet,以便我得到花哨的图形共享按钮而不是文本按钮。 (我的应用仅针对iOS 6。)

在尝试使用它几个晚上之后,似乎要么我完全误解了如何使用它,要么Apple当前的实现很糟糕:

  • 您不能为不同的服务指定不同的消息。 如果我想要一些可以解决的问题:邮件,Facebook,消息和Twitter,它最多需要140个字符才能在Twitter上运行。 有没有办法为每种类型的活动设置自定义内容?

  • 似乎无法为邮件设置主题行或收件人。 我已经阅读了文档,他们认为这可能是使用mailto:protocol的NSURL可能实现的,但在我的测试中,这些URL只是被塞进了邮件正文中。 实际上是否有办法设置主题行和可选的收件人?

  • 如果我想解决这些缺点,并通过inheritanceUIActivity来做我自己的自定义活动,我必须使用自定义图像/图标。 因此,我不能用Apple的官方图标模仿Mail活动,例如实现我自己的自定义活动后端,实际上让我设置主题行,收件人,自定义正文等。我错了,有没有办法使用Apple的服务图标,但有机会自定义行为? (我看到的唯一回调就是在活动完成后运行的回调,对吧?)

我希望我错了!

你最好使用一个行为类似于UIAcitvityController的自定义组件,因为它非常有限,正如你所指出的那样。

这是一个例子: https : //github.com/hjnilsson/REActivityViewController ,我只是从https://github.com/romaonthego/REActivityViewController分叉它,以允许您设置电子邮件主题字段。

有没有办法为每种类型的活动设置自定义内容?

是的,我想你应该–activityViewController:itemForActivityType: UIActivityItemProvider并使用你的逻辑覆盖方法–activityViewController:itemForActivityType:例如,修剪字符串为140个字符,用于Twitter)。
然后将此类的实例传递给-[UIActivityViewController initWithActivityItems:applicationActivities:]


实际上是否有办法设置主题行和可选的收件人?

你是对的, mailto方案应该能够设置这些字段。 如果它不起作用,我认为这是错误。 (我自己没试过,但我会给它一张支票。)


有没有办法使用Apple的服务图标,但有机会自定义行为?

我想你不能这样做。 (除非你想破解那些系统活动。)