2010-06-21 19 views
4

我有這段代碼,當我建立它針對不同基地的SDK的一個問題:問題與MFMailComposeViewController的「沒有郵件賬戶」警報 - SDK 3.0 VS SDK 4.0

MFMailComposeViewController *mail = nil; 
mail = [[MFMailComposeViewController alloc] init]; 
NSString *description = @"Some mail string"; 
if([MFMailComposeViewController canSendMail]) 
{ 
    mail.mailComposeDelegate =self; 
    [mail setSubject:story.title]; 
    [mail setMessageBody:[NSString stringWithFormat:(NSString *)kMessageBodyFormat,description,story.webLink] isHTML:NO]; 
} 
[self presentModalViewController:mail animated:YES]; 
[mail release]; 
mail=nil; 

當我與基地SDK構建它3.0,如果MFMailComposeViewController's初始化返回nil,如果用戶沒有任何郵件帳戶,則系統將默認設置「無郵件帳戶」警報。

但是,當我使用Base SDK 4.0構建它並將其部署爲3.0 OS時,如果用戶沒有任何郵件帳戶,則系統不會顯示相同的警報,而是presentModalViewController崩潰。

MFMailComposeViewController's初始化返回nil,如果用戶不擁有兩個3.0和4.0的基礎SDK任何郵件帳戶,而是介於presentModalViewController智能飛架警報在SDK 3.0,但SDK 4.0的情況下部署到3.0失敗和崩潰。

有沒有人遇到這個問題/任何想法實際發生的事情。

感謝, 拉吉

回答

7

我只是做與iOS 4的一些beta測試,並在您此帖一。我無法弄清楚爲什麼它返回零,所以謝謝你的答案。至於你的問題的答案,你只需要檢查它是否爲零。如果沒有,則不要顯示模態視圖控制器。它仍然會顯示彈出窗口。

+0

是的,非常真實!崩潰是由於presentModalViewController的nil參數在3.0中沒有問題,但在基本SDK 4.0中存在問題。我不明白一件事,從哪裏出現「無郵件帳戶」警報?一旦MFMailComposeViewController的對象生成並提出警報,系統可能會檢查郵件帳戶。 – 2010-06-22 05:03:45

+0

好奇,如果你需要得到一個指針「無郵件帳戶」UIAlertView?我有一個UIPopOverController內部的子類,如果/從「無郵件帳戶」警報視圖中點擊確定按鈕,用戶交互將變爲「否」。如果您點擊以關閉彈出窗口 - 然後點擊該動作再次顯示 - 彈出窗口變得可見。但是,只有通過該流程時纔會發生這種情況 - 從「無郵件帳戶」警報中點擊「確定」不會。 – Cole 2011-01-17 22:19:55

8

我發現這個問題,而我有同樣的問題。

我認爲它是因爲,如果沒有在手機中設置郵件帳戶。 [[MFMailComposeViewController alloc] init]返回零。

所以在呈現視圖控制器之前,我們需要檢查它是否爲零。

+0

是真的!我對這個問題越來越感到瘋狂 – Claus 2012-05-22 14:25:20