2013-09-26 51 views
10

我有一個用於發送電子郵件和短信的應用程序。iOS 7上的MFMessageComposeViewController慢得多

我遇到的問題是,iOS 7上的MFMessageComposeViewController的加載速度比之前的iOS上的要慢得多,並且隨着聯繫人數量的增加,它變得最差。

消息應用程序打開並加載內容之前,屏幕會變黑幾秒。

有什麼想法?

使用同樣大量的電子郵件,MFMailComposeViewController與以前一樣快。

幫助!! 謝謝。

+0

你是否在新的空白項目中重複了這個問題? – Wain

+0

不,我正在使用實時項目的副本。 –

+0

我的意思是你確定這不是由你的項目中的東西引起的。你在導航欄中使用任何自定義字體?在一個簡單的項目中證明這個問題。如果在簡單項目中仍然發生,請提出Apple的錯誤。 – Wain

回答

1

此問題已得到修復與iOS7.0.3

+6

在iOS 7.1中再次發生這個問題.. –

1

我也遇到過這個問題,對於iMessage收件人。

似乎與從iCloud同步歷史記錄的iMessage同步記錄。我有4個收件人,第一個Apple iMessage對話框彈出約需30秒。

在等了一次之後,我取消了發送,下一次重複嘗試很快就解決了 - 這個結果加上iOS7在作曲家視圖中顯示消息歷史的事實(在iOS7之前沒有),已經讓我得出結論,蘋果正在等待某種iCloud同步,然後彈出視圖。

這款iPhone 4和新iPhone 5s使用不同的iCloud帳戶進行復制,所以它似乎沒有硬件限制或對我的iCloud帳戶或收件人是唯一的。


我對這個問題沒有解決辦法證實,但我有一些解決方法建議作進一步調查:

  • 我們的一些用戶報告說,重啓設備解決此問題。
  • 升級到iOS7後,這可能是每個獨特iMessage收件人的「1次費用」。
+1

我也有與iMessage組成一樣的問題。然而,我有一個完全不同的問題,即有時候這個消息甚至不會發送這一切。儘管重啓設備後問題得到解決。我一直在爲這個問題困擾,而且似乎是間歇性的。 – Calvin

+0

在這裏完全一樣,從我的測試看來,它似乎與設備上有歷史記錄的收件人有關,也就是說,您之前已經收到過消息。如果您選擇的收件人沒有現有的iMessage/SMS線程,則控制器會在呈現後立即作出響應,並且在按發送後會成功發送消息。 如上所述,重新啓動設備(在我的情況下,iPhone 5)解決了這個問題(暫時)。 – user1002428

4

我有同樣的問題。我與

@property (nonatomic, strong, retain) MFMessageComposeViewController *messageComposer; 

然後所有者類調用此方法作曲家強引用:

-(void)sendSMSFromController:(UIViewController*)controller 
{ 
    self.messageComposer = [MFMessageComposeViewController new]; 

    if([MFMessageComposeViewController canSendText]) { 
     [_messageComposer setBody:_body]; 
     [_messageComposer setRecipients:[NSArray arrayWithObjects:_recipient, nil]]; 
     [_messageComposer setMessageComposeDelegate:self]; 
     [controller presentViewController:_messageComposer animated:NO completion:NULL]; 
    } 
} 

作曲很快出現,但慢慢地消失。最終確定如下:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result 
{ 
    switch (result) { 
     case MessageComposeResultCancelled: 
      NSLog(@"Message sending cancelled."); 
      break; 

     case MessageComposeResultFailed: 
      NSLog(@"Message sending failed."); 
      break; 

     case MessageComposeResultSent: 
      NSLog(@"Message sent."); 
     default: 
      break; 
    } 


    [controller dismissViewControllerAnimated:YES completion:^(){ 
     self.messageComposer = nil; 
    }]; 
} 

重新啓動我的設備後,它顯然工作。重新啓動之前(通過發送無效收件人與MessageService混淆後)失敗。

+0

謝謝,這對我很有用......我仍然覺得很奇怪,我不得不重新啓動我的iphone ... – meronix

+0

似乎MessageService包含一些單例,它沒有線程安全的初始化。 – igraczech

相關問題