0

問題- MFMessageComposeViewController の準備と表示は、Apple ドキュメントによると簡単です。私が知る必要があるのはこれが完全に提示されたときです。


説明- 完了ブロックで MFMessageViewComposeController を表示するのは簡単ですが、私の問題は解決しません:

[self presentViewController:messageController animated:YES completion:^(void){

    //Controller has been shown. But not really....

}];

この問題は、より大きな受信者グループ (たとえば 50 人) へのメッセージの場合により明白になります。完了ブロックが呼び出されますが、電話の画面は黒いままです。数秒後、メッセージ ウィンドウが表示されます。数秒後、受信者リストがアクティブになり、カーソルが点滅します。基本的に、コントローラーが提示されたと思われるに、多くの読み込みと処理が行われます。


私が望むこと-インターフェイスが完全にロードされたときを把握するため。私は単純な答えを期待していません.私はすでにかなりの時間を費やしてきました-間違いなく報奨金に値します. コードで有効な回答を投稿できれば、最大の報奨金を授与します。

4

1 に答える 1

0

MFMailComposeViewController ビューのフレームを確認するだけです。画面の上部に到達したら、外観を処理します。

[self presentViewController:messageController animated:YES completion:^
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^
    {
        while(messageController.view.frame.origin.y > 0)
        {
        }

        dispatch_async(dispatch_get_main_queue(), ^
        {
            // Handle appearance of MFMailComposeViewController
        });
    });
}];

もう 1 つの方法は、メソッドを使用して 0.3 秒待機するdispatch_after()ことです。ただし、この時間間隔は、iOS の次のバージョンで変更される可能性があります。

于 2014-03-28T08:04:27.087 に答える