我正在使用UIActivityViewController
带有自定义子类的UIActivityItemProvider
. 我的提供程序可以很好地处理UIActivityType
我希望提供的所有内容,除非执行以下序列:
- 显示
UIActivityViewController
- 使用 AirDrop 与其他设备共享
- 成功分享到另一台设备后,发送邮件分享
错误的行为是我有一个提供NSString
实例的文本提供程序,而这些实例没有出现在电子邮件的主题和正文中。预期的行为是邮件撰写对话框应包含文本提供者提供的主题和正文。
执行此序列时,我在控制台中收到以下警告:
2014-03-27 18:35:09.065 TestApp [1347:60b] 警告 - UIActivityItemProvider <MyActivityItemProvider: 0x170296620> 被忽略(重复、执行或完成)
2014-03-27 18:35:09.065 TestApp [1347:60b] 警告 - UIActivityItemProvider <TestActivityItemProvider: 0x170480a00> 被忽略(重复、执行或完成)
2014-03-27 18:35:09.065 TestApp [1347:60b] 警告 - UIActivityItemProvider <WonderfulActivityItemProvider: 0x1704b7760> 被忽略(重复、执行或完成)
每个警告都对应于UIActivityItemProvider
我提供的一个。在这些提供者中,该- (id)item
方法以这种方式实现:
- (id)item
{
if ([self.activityType isEqualToString:UIActivityTypeMail]) {
return @"MyMailString";
}
return @""; // placeholder item
}
通过这种实现,我能够创建一个能够为 Facebook、Twitter、Mail 等提供不同字符串的提供程序。通过 AirDrop 共享时,我共享一个没有任何文本的 pdf 文件。而且由于 AirDrop 共享不会关闭UIActivityViewController
,因此所有其他“活动”在 AirDrop 共享后应该可以正常工作。谢谢你的帮助!