问题 - 根据Apple文档,准备和显示MFMessageComposeViewController非常简单。我需要知道的是 时已完全呈现。
解释 - 使用完成块显示MFMessageViewComposeController很简单,但并不能解决我的问题:
[self presentViewController:messageController animated:YES completion:^(void){
//Controller has been shown. But not really....
}];
对于较大的收件人群体(例如50人),问题更为明显。调用完成块,但手机的屏幕仍为黑色。几秒钟后,出现消息窗口。几秒钟后,收件人列表变为活动状态,闪烁的光标。基本上,在 之后,有很多加载和处理可以在控制器出现之后进行。
我想要什么 - 在 时找出 接口已完全加载。我不希望得到一个简单的答案,而且我已经花了很多时间在它上面 - 绝对值得肯定。如果您可以使用代码发布有效的答案,我将为此授予最大奖励。
答案 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的下一个版本。