如何指定自定义UIActivity支持主题?
UIActivityItemSource 协议的文档提到,如果您想要提供主题,可以实现可选的 activityViewController:subjectForActivityType: 选择器:
当发布一个项目时,该服务可能会为单独的主题字段和数据字段(例如电子邮件消息)提供支持。 如果您希望为支持此功能的服务提供主题字段,请实现此方法。
但是,据我所知,没有任何地方记录如何实际指定我的自定义 UIActivity 支持主题。怎么做?
编辑:为了使我的问题更清晰
假设我有一个自定义activity项源,比如 DocumentActivityItemSource,它实现了 UIActivityItemSource 协议,并且我有一个自定义UIActivity,我们可以称之为 SendWithFooMessageActivity。
我随后启动了一个UIActivtyViewController:
现在,在弹出窗口中,我选择
通常,活动项可以是图像、字符串或URL。在这种情况下,假设
但是,Foo消息还需要一个主题才能有效。有趣的是,
对于Apple提供的电子邮件活动,确实会发生这种情况-在
然而,似乎没有一种方法可以指定我的自定义
同样,对于
到目前为止,我已经使用了@chriszumberge提供的解决方法,即绕过activityViewController并直接使用来自itemsource的信息初始化自定义活动:
当发布一个项目时,该服务可能会为单独的主题字段和数据字段(例如电子邮件消息)提供支持。 如果您希望为支持此功能的服务提供主题字段,请实现此方法。
但是,据我所知,没有任何地方记录如何实际指定我的自定义 UIActivity 支持主题。怎么做?
编辑:为了使我的问题更清晰
假设我有一个自定义activity项源,比如 DocumentActivityItemSource,它实现了 UIActivityItemSource 协议,并且我有一个自定义UIActivity,我们可以称之为 SendWithFooMessageActivity。
我随后启动了一个UIActivtyViewController:
NSArray *activityItems = @[[[DocumentActivityItemSource alloc] initWithDocument: document]];
NSArray *applicationActivities = @[[[SendWithFooMessageActivity alloc] init]];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:applicationActivities];
[parentViewController presentViewController:activityViewController
animated:YES
completion:nil];
现在,在弹出窗口中,我选择
SendWithFooMessageActivity
。然后,活动控制器将调用DocumentActivityItemSource
实例上的activityViewController:itemForActivityType:
以获取一个项目,然后通过调用该对象的prepareWithActivityItems:
方法将其转发到SendWithFooMessageActivity
。通常,活动项可以是图像、字符串或URL。在这种情况下,假设
DocumentActivityItemSource
返回一个包含有关文档的精彩简介的字符串。然后,SendWithFooMessageActivity
可以使用此文本作为其foo邮件消息的正文文本。但是,Foo消息还需要一个主题才能有效。有趣的是,
UIActivityItemSource
协议还包含可选的activityViewController:subjectForActivityType:
,它实际上已记录在支持主题的服务中提供主题。对于Apple提供的电子邮件活动,确实会发生这种情况-在
DocumentActivityItemSource
上调用activityViewController:subjectForActivityType:
,并将结果用作电子邮件的主题。然而,似乎没有一种方法可以指定我的自定义
SendWithFooMessageActivity
也想从activityitem中获取主题?文档提到这适用于“支持[主题]的服务”,那么我该如何指定我的服务确实支持呢。同样,对于
activityViewController:thumbnailImageForActivityType:suggestedSize:
也是如此,它应该为“支持一个”的服务提供缩略图。这适用于默认的ShareOnTwitter和ShareOnFacebook活动,但似乎没有办法让自定义活动支持它。这可能吗?到目前为止,我已经使用了@chriszumberge提供的解决方法,即绕过activityViewController并直接使用来自itemsource的信息初始化自定义活动:
[SendWithFooMessageActivity alloc] initWithSubject: document.title];
但这似乎不是整个UIActivityViewController
设置应该使用的方式。
activityViewController:subjectForActivityType:
选择器。 - chriszumbergeUIActivity
是否应该实现UIActivityItemSource
?据我所知,您的自定义UIActivities
应该从基本的UIActivity
继承,并且您的活动项目应该实现UIActivityItemSource
协议。然后,您将在UIActivityViewController
上注册项目和自定义活动,然后它会要求用户选择一个活动,并使用提供的项目配置所选的活动。我的问题是如何指定我的自定义UIActivity
希望使用主题进行配置。 - AHMUIActivity
上使用activityViewController:subjectForActivityType:
...实际上,你可能不应该这样做。在评论框中输入太多了,请参见我上面的编辑。 - chriszumberge