あなたがしたいことは、Facebook ダイアログを表示する前に、ユーザーが Twitter の投稿を終了するまで待つことです。facebook ダイアログが twitter ダイアログの完了ハンドラに表示されるようにコーディングできます。
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) //check if Twitter Account is linked
{
mySLComposerSheet = [[SLComposeViewController alloc] init]; //initiate the Social Controller
mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social plattform to use it, e.g. facebook or twitter
[mySLComposerSheet setInitialText:[NSString stringWithFormat:@"Test",mySLComposerSheet.serviceType]]; //the message you want to post
[mySLComposerSheet addImage:yourimage]; //an image you could post
[self presentViewController:mySLComposerSheet animated:YES completion:nil];
}
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
// dismiss the Tweet Sheet
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:NO completion:^{
[self shareFacebook];
}];
});
}];
編集: 最初にコントローラーを破棄し、コントローラーが破棄された後に facebook メソッドを呼び出す必要があります。完了ハンドラーがメイン スレッドで呼び出されることが保証されていないため、メイン スレッドでコントローラーを破棄する必要があります。
ただし、UX の観点からすると、ユーザーが twitter と Facebook で同時に共有することを余儀なくされるのは非常に面倒です。おそらく、この共有を行うためのより良い方法はありますか?