我使用以下代码使用UIActivityViewController共享图像,一些文本和URL.一切正常,但是当使用选择AirDrop时,它会得到“无法同时接收所有这些项目”.如果我只分享图像,那么AirDrop可以工作.我需要电子邮件,Facebook,Twitter共享方法的文本和网址.
有没有办法保持文本和URL,使AirDrop只共享图像,而Facebook,电子邮件,Twitter的共享方法继续使用文本和网址与我试图分享的图像?
NSString *text = [NSString stringWithFormat:@"I made this image using %@ iOS app. Here is the link to download it:",[CloudHelper appName]]; NSURL *url = [NSURL URLWithString:APP_URL]; UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:@[text,url,myImage] applicationActivities:nil]; [self presentViewController:activityController animated:YES completion:nil];
解决方法
您需要创建和共享符合
UIActivityItemSource的三个对象,其中一个返回一个字符串,一个返回一个图像,一个返回一个URL.然后,当调用请求该项目的委托回调时,您检查选择了哪种活动类型(Facebook,Twitter,空投等),如果该项目不适用,则返回nil.
因此,在空投的情况下,只有图像的项目源将返回非零值.您可以查看airdrop sample code以获取有关如何实现UIActivityItemSource的一些示例