如何指定自定义UIActivity
支持主题?自定义UIActivity主题
为UIActivityItemSource协议的文件中提到,可以实现可选activityViewController:subjectForActivityType:
选择,如果你想你的源提供一个主题:
当发布一个项目的服务可以提供一个独立的学科领域,数据字段,例如电子邮件消息。如果您希望为支持其中的服务提供主题字段,请实施此方法。
但是,据我所知,它没有记录在任何地方,我可能实际上指定我的自定义UIActivity支持主题。这是如何完成的?
编辑:为了使我的问题更加清晰
假设我有一个自定义活动项目源,说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
。
通常情况下,活动项目将是图像,字符串或网址。在这种情况下,我们假设DocumentActivityItemSource
返回一个字符串,其中包含关于文档的退出Blurb。 SendWithFooMessageActivity
然后可以使用这个文本作为它的foo-mail消息的正文。
但是,Foo消息也要求主题有效。有趣的是,UIActivityItemSource
协议还包含可选的activityViewController:subjectForActivityType:
,事实上它被记录为提供支持服务的主题。
对于Apple提供的电子邮件活动,实际上会发生 - activityViewController:subjectForActivityType:
在DocumentActivityItemSource
上被调用,并且结果在电子邮件中用作主题。
但是,似乎没有办法指定我的自定义SendWithFooMessageActivity
也想从活动项目中获得主题?文档提到这发生在“支持[主题]的服务” - 那么我如何指定我的服务确实支持其中一个。
此外,activityViewController:thumbnailImageForActivityType:suggestedSize:
也是如此,它应该为“支持一个的服务”提供缩略图。这适用于默认的ShareOnTwitter和ShareOnFacebook活动,但似乎没有办法让自定义活动支持它。这可能吗?
到目前为止,我已经使用了@chriszumberge下方还提供了解决办法,这是短路activityViewController并直接初始化它来自的ItemSource需要的信息的自定义活动:
[SendWithFooMessageActivity alloc] initWithSubject: document.title];
但这似乎不是整个UIActivityViewController
设置应该使用的方式。
你是如何实施协议的?我认为UIActivity通常不会访问原始的UIActivityItemSource。据我了解,UIActivityItemSource应该从activityViewController:itemForActivityType返回一个项目,并且该项目应该是NSString,UIImage,UIImage或其他项目,具体取决于您想要共享的项目。 您确定只需将UIActivityItemSource作为一个项目返回?你能得到这个工作的默认苹果提供的邮件,Twitter和Facebook的活动? – AHM 2014-09-29 10:58:23