2013-10-08 59 views
23

我正在開發一個應用程序,要求是打開電子郵件作曲者按鈕單擊UIAlertView。ios:應用程序試圖在目標上提供一個無模式視圖控制器

郵件正文中的郵件是從UITextView複製的。我使用下面的代碼snipt:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 0) 
    { 
     // opening message composer 
    } 
else 
    { 
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    picker.mailComposeDelegate = self; 
    [picker setSubject:@"Test mail"]; 
    [picker setMessageBody:messageBody.text isHTML:YES]; 
    [self presentViewController:picker animated:YES completion:NULL]; 
    } 
} 
// mail compose delegate 
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
     [self dismissViewControllerAnimated:YES completion:NULL]; 
} 

但問題是,我得到錯誤說應用程序嘗試對目標呈現零模態視圖控制器。我們如何在ios 7中打開默認的郵件編輯器?

回答

63

按照蘋果,你應該檢查是MFMailComposeViewController能夠只是在發送前發送郵件

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
if ([MFMailComposeViewController canSendMail]) { 
    picker.mailComposeDelegate = self; 
    [picker setSubject:@"Test mail"]; 
    [picker setMessageBody:messageBody.text isHTML:YES]; 
    [self presentViewController:picker animated:YES completion:NULL]; 
} 

編號:Apple Dev url


+0

守衛機制岩石! – Naeem

+0

但爲什麼短信(MFMessageComposeViewController)不需要此檢查?我有一個沒有SIM卡的測試設備,從技術上說,它不應該能夠發送文本,但它沒有檢查工作正常(沒有例外拋出)...爲什麼?謝謝。 – RainCast

+0

因此,不再測試模擬器上的發送郵件UI ...? –

8
在設備設置也

遺忘郵件帳戶配置導致這個錯誤。重新檢查您的設備中是否配置了郵件帳戶。

相關問題