4

我正在使用UIActivityViewController带有自定义子类的UIActivityItemProvider. 我的提供程序可以很好地处理UIActivityType我希望提供的所有内容,除非执行以下序列:

  1. 显示UIActivityViewController
  2. 使用 AirDrop 与其他设备共享
  3. 成功分享到另一台设备后,发送邮件分享

错误的行为是我有一个提供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 共享后应该可以正常工作。谢谢你的帮助!

4

0 回答 0