2014-03-28 45 views
0

問題 - 根據Apple文檔準備和顯示MFMessageComposeViewController是微不足道的。我需要知道的是這已完全呈現。MFMessageComposeViewController - 我怎樣才能知道它何時完全呈現?


說明 - 顯示MFMessageViewComposeController與完成塊是容易的,但並沒有解決我的問題:

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

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

}]; 

的問題是郵件較大收件人組更明顯(比如50人)。完成塊被調用,但手機的屏幕保持黑屏。幾秒鐘後,出現消息窗口。幾秒鐘後,收件人列表將變爲活動狀態,並且閃爍的光標。基本上,有大量的加載和處理繼續之後控制器已經被提出。


我想什麼 - 爲了弄清楚接口已經滿載。我不期待一個簡單的答案,而且我已經花了相當多的時間 - 絕對值得。如果您可以通過代碼發佈工作答案,我會獎勵它的最高獎勵。

回答

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的下一個版本。

+0

謝謝!不幸的是,這裏的框架起源實際上是0。在框架的原點變爲零後,仍然會有更多的負載繼續進行,包括黑屏和文本視圖,需要幾秒鐘時間才能變爲活動狀態 - 所以這樣做不起作用。 –