4

我正在尝试移动我的应用程序以使用 UIActivityViewController,而不是 UIActionSheet,以便获得精美的图形共享按钮而不是文本按钮。(我的应用程序仅针对 iOS 6。)

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

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

  • 似乎无法为邮件设置主题行或收件人。我已经阅读了文档,它们听起来好像使用 mailto: 协议的 NSURL 可以做到这一点,但是在我的测试中,这些 URL 只是被塞进了消息正文中。实际上有没有办法设置主题行和可选的收件人?

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

我希望我错了!

4

2 回答 2

7

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

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


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

你是对的,mailto方案应该可以设置这些字段。如果它不起作用,我认为这是错误。(我自己没有尝试过,但我会检查一下。)


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

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

于 2013-01-31T07:47:33.883 回答
1

正如您所指出的,您最好使用行为UIAcitvityController非常有限的自定义组件。

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

于 2013-02-03T21:50:40.193 回答