2010-06-21 32 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