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

Raj*_*dal 4 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;
Run Code Online (Sandbox Code Playgroud)

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

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

MFMailComposeViewController's如果用户在3.0和4.0基本SDK中都没有任何邮件帐户,则初始化返回nil,但在某些地方presentModalViewController智能地在SDK 3.0的情况下发出警报但在3.0上部署的SDK 4.0失败并崩溃.

有没有人遇到过这个问题/任何想法究竟发生了什么.

谢谢,拉吉

kar*_*rim 8

当我遇到同样的问题时,我发现了这个问题.

我认为这是因为,如果手机中没有设置邮件帐号.该[[MFMailComposeViewController alloc] init]回报为零.

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


小智 7

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