2013-05-15 27 views
3

我在我的应用程序中实现了UIActivityViewController,并且可以成功共享字符串和图像。但是,我注意到,当您在iOS照片应用程序中共享图像时,有一些服务未出现在我的应用程序中。即打印,用作墙纸,分配到联系人和照片流。我的应用程序能够使用邮件,消息,Facebook,Twitter和复制就好。某些UIActivityViewController服务从我的应用程序中缺失

我认为这两个:

1)这些额外的服务,一直在使用UIActivityItemProviderUIActivityItemSource等实现的照片应用程序内的定制服务..

2),我的数据提供的格式不符合这些服务的要求。

我已经阅读了几次文档,但似乎没有看到任何关于它的内容。

编辑:显示代码的要求:

#define SM_SHARE_IMAGE_AND_STRING 1 

-(void)actionToolbarViewControllerUserTappedShareButton:(SMActionToolbarViewController*)sender{ 
    // Reposition anchor view for UIPopoverController to point at 
    [self repositionAnchorViewToButtonFrame:self.actionToolbarViewController.shareButtonFrame]; 

    // Asynch download of image 
    [SMUtility downloadAsset:self.selectedAsset completion:^(UIImage *image) { 
     // Create image source 
     SMActivitySource *activityImageSource = [[SMActivitySource alloc]initWithImage:image]; 
#if defined(SM_SHARE_IMAGE_AND_STRING) 
     // Create string source 
     NSString *assetsString = [SMUtility assetsString:[NSArray arrayWithObject:self.selectedAsset]]; 
     SMActivitySource *activityStringSource = [[SMActivitySource alloc]initWithString:assetsString]; 

     // Present UIActiviyViewController within an UIPopoverController 
     NSArray *items = [@[activityImageSource, activityStringSource]mutableCopy]; 
#else 
     NSArray *items = [@[activityImageSource]mutableCopy]; 
#endif 

     UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil]; 
     [activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){ 
      [SMMixPanel eventSharePhotoMethod:@"Share"]; 
     }]; 
     self.buttonPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController]; 
     [self.buttonPopoverController presentPopoverFromRect:self.anchorView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    }]; 
} 
+1

显示您用来创建'UIActivityViewController'的代码。 – rog

回答

4
  1. 打印,并分配给联系活动,只要你提供正确的数据由UIActivityViewController显示标准的活动。
  2. 您必须为分配到联系人活动提供UIImage。请参阅文档UIActivityTypeAssignToContact。有关接受的详细信息,请参阅UIActivityTypePrint的文档。

“用作壁纸”似乎是仅在照片应用中显示的自定义活动。

+0

谢谢你的信息。我正在阅读“UIActivityTypeAssignToContact”,“UIActivityTypeSaveToCameraRoll”和“UIActivityTypePrint”的文档,这些文档都声明可以使用UIImage。 'UIActivityTypePrint'特别说明它必须是本地图像,但其他两个不是。 我修改了我的代码(以上)只使用UIImage。按下电子邮件进行测试,我发现它确实是图像。但是,我没有收到“添加到联系人”或“保存到相机胶卷”的服务图标。任何线索为什么?该文件没有真正说出任何额外的东西。 – VaporwareWolf

+0

我还修改了+ [SMUtility downloadAsset]将图像写入磁盘,然后从本地存储中创建一个新的UIImage,然后将该UIImage传递给该块。相同的结果。 – VaporwareWolf

+0

不知道'SMActivitySource'是如何实现的,没有办法知道问题是什么。为什么不将包含简单'UIImage'的数组传递给'initWithActivityItems:'方法?另外,确保所有这些UI代码都在主线程上完成。 – rmaddy

相关问题