系统分享中的AirDrop
不能同时包含图片和链接, 否则报错”不能同时接收...”, 但是其他系统分享可以同时分享图片和链接
解决方法:
创建UIActivityItemProvider
的子类, 在子类中实现代理方法
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType;
判断activityType
是否为AirDrop类型 UIActivityTypeAirDrop
如果是, 返回nil; 不是, 返回传入的图片路径
将创建的子类添加到ActivityItems
中即可
UIActivityViewController *activityViewController =[[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:nil];
PS:
如果需要适配iPad, 需要处理UIActivityViewController
的弹出方式
将UIActivityViewController
包裹在UIPopoverController
中
[[UIPopoverController alloc] initWithContentViewController:activityViewController];
需要设置弹出的位置,方向等
[self.popup presentPopoverFromRect:CGRectMake(VC.view.frame.size.width/2, VC.view.frame.size.height/4, 0, 0) inView:VC.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
iPhone直接presentViewController
即可
代码如下:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.popup = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[self.popup presentPopoverFromRect:CGRectMake(VC.view.frame.size.width/2, VC.view.frame.size.height/4, 0, 0) inView:VC.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}else {
[VC presentViewController:activityViewController animated:YES completion:nil];
}