我的应用程序中缺少某些UIActivityViewController服务

时间:2013-05-15 16:52:56

标签: ios uiactivityviewcontroller

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

我在想:

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 个答案:

答案 0 :(得分:5)

  1. 只要您提供正确的数据,“打印”和“分配给联系人”活动就是UIActivityViewController显示的标准活动。
  2. 您必须为“分配给联系人”活动提供UIImage。请参阅UIActivityTypeAssignToContact的文档。有关其接受的详细信息,请参阅UIActivityTypePrint的文档。
  3. “用作壁纸”似乎是仅在照片应用中显示的自定义活动。