のさまざまなサービスにさまざまなコンテンツを提供したいと考えていますUIActivityIndicatorView
。たとえば、電子メールの HTML 文字列、Facebook/Twitter の標準文字列、コピーの画像などです。これらはすべて、単一のポップオーバー ウィンドウ内で発生します。
これは不可能だと思います。関連するすべてのクラスをいじっていると、提供したコンテンツ タイプが変わると、アクティビティ ビューに表示されるサービスが変わることに気付きました。つまり、文字列を指定すると、セット A のサービスが表示されました。画像を提供すると、サービスのセット 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];
}];
}