1

我想为 a 中的不同服务提供不同的内容UIActivityIndicatorView。例如,用于电子邮件的 HTML 字符串、用于 Facebook/Twitter 的标准字符串以及用于复制的图像。所有这些都发生在一个弹出窗口中。

我不认为这是可能的。当我在玩所有涉及的类时,我注意到出现在活动视图中的服务随着我提供的内容类型的变化而变化。换句话说,当我提供一个字符串时,出现了一组服务。当我提供图像时,出现了服务集 B。

接下来,我尝试同时添加字符串和图像,认为它可能会提供不同的内容,但这只是将字符串和图像都添加到服务中(例如,使用字符串创建电子邮件,然后是下图)。

这是我提供字符串值的方式(它们是 html 链接):

-(void)shareButtonTouchUpInside:(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];
        // 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];
        UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
        [activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){
            // TODO: Populate mixpanel data
            [SMMixPanel eventSharePhotoMethod:@"Unknown"];
        }];
        self.buttonPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
        [self.buttonPopoverController presentPopoverFromRect:self.anchorView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }];
}
4

2 回答 2

3

您应该继承 UIActivityItemProvider或创建符合UIActivityItemSource的对象。传入一个数组(每个你想分享的东西一个),并让其中一些返回 nil,具体取决于activityViewController:itemForActivityType:调用中选择的活动。

于 2013-07-31T20:13:50.277 回答
0

这个问题被一次又一次地问到,解决它的唯一方法是制作自己的 UIActivity,请参阅苹果文档以了解如何做到这一点。这是一个链接:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UIActivity_Class/Reference/Reference.html

于 2013-05-15T17:03:04.427 回答