MFMailComposeViewController的“无邮件帐户”警报问题 - SDK 3.0 vs SDK 4.0

时间:2010-06-21 15:34:47

标签: iphone iphone-sdk-3.0 mfmailcomposeviewcontroller

当我为不同的Base SDK构建它时,我遇到了这段代码的问题:

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;

当我使用Base SDK 3.0构建它时,如果MFMailComposeViewController's初始化返回nil,如果用户没有任何邮件帐户,则会发生这种情况,系统会提供默认的“No mail accounts”警报。

但是当我使用Base SDK 4.0构建它并将其部署到3.0 OS时,如果用户没有任何邮件帐户,系统不会显示相同的警报,而是presentModalViewController崩溃。

如果用户在3.0和4.0基本SDK中都没有任何邮件帐户,则

MFMailComposeViewController's初始化返回nil,但在某些地方presentModalViewController智能地在SDK 3.0的情况下发出警报但在4.0上部署了SDK 4.0失败并崩溃。

是否有人遇到过这个问题/任何想法实际发生了什么。

谢谢, 拉吉

2 个答案:

答案 0 :(得分:8)

我遇到同样的问题时发现了这个问题。

我认为这是因为,如果手机中没有设置邮件帐号。 [[MFMailComposeViewController alloc] init]返回nil。

因此,在呈现视图控制器之前,我们需要检查它是否为零。

答案 1 :(得分:7)

我刚刚在iOS 4上进行了一些测试,并且发现了你的帖子。我无法弄清楚为什么它会返回零,所以谢谢你的回答。至于你的问题的答案,你只需要检查它是否为零。如果它为零,则不显示模态视图控制器。它仍会显示弹出窗口。