次のようなソーシャル共有コードがあります。
SLComposeViewController *composer = [SLComposeViewController composeViewControllerForServiceType:…];
[composer setInitialText:…];
[composer addURL:…];
[composer setCompletionHandler:^(SLComposeViewControllerResult result) {
[someController dismissViewControllerAnimated:YES completion:^{
… // 1
}];
}];
[someController presentModalViewController:composer animated:YES];
問題は、Facebook と Twitter でコードの動作が異なることです。dismissViewControllerAnimated:
ユーザーが Facebook の作成画面を確認すると、1 としてマークされた完了ハンドラーが呼び出されず、呼び出しを削除してもすべて正常に動作するため、コンポーザーは明らかにそれ自体を閉じます。
一方、ユーザーが Twitter の作成画面を確認し、手で閉じないと、作成画面はスライドアウトしますが、一部のコントローラーがまだフォアグラウンドにあるように、アプリはスタックしたままです。呼び出しを追加するdismissViewControllerAnimated:
と、問題がなくなり、完了ハンドラー (1) が正しく呼び出されます。
あなたもこの行動に気づきましたか?私は何か間違ったことをしていますか?これは現在の iOS 6、GitHub のサンプル コードです。私はこの問題を Apple (Radar #12642889) に報告しましたが、まだ反応はありません。