MFMessageComposeViewController - 如何才能找到完全呈现的内容?

时间:2014-03-28 04:56:10

标签: ios objective-c mfmessagecomposeview

问题 - 根据Apple文档,准备和显示MFMessageComposeViewController非常简单。我需要知道的是 时已完全呈现。


解释 - 使用完成块显示MFMessageViewComposeController很简单,但并不能解决我的问题:

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

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

}];

对于较大的收件人群体(例如50人),问题更为明显。调用完成块,但手机的屏幕仍为黑色。几秒钟后,出现消息窗口。几秒钟后,收件人列表变为活动状态,闪烁的光标。基本上,在 之后,有很多加载和处理可以在控制器出现之后进行。


我想要什么 - 在 时找出 接口已完全加载。我不希望得到一个简单的答案,而且我已经花了很多时间在它上面 - 绝对值得肯定。如果您可以使用代码发布有效的答案,我将为此授予最大奖励。

1 个答案:

答案 0 :(得分: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
        });
    });
}];

另一种方法是使用dispatch_after()方法等待0.3秒。但是这个时间间隔可以改变iOS的下一个版本。