我发现[MFMailComposeViewController canSendMail]
在创建/删除邮件帐户后从应用程序唤醒应用程序时返回错误的值。
在我的应用程序中,只有在邮件可用时才有一些相关的功能。因此,我想禁用在canSendMail检查中使用它的可能性。
一切正常,而不是以下场景:
1.删除/禁用iPhone上的邮件帐户(现在我正在使用iOS 4.2进行测试)
2.启动应用程序 - 以正确的方式禁用所有内容。
3.按主页按钮,然后打开设置。创建和设置邮件帐户。
4.返回应用程序 - [MFMailComposeViewController canSendMail]
返回NO,但设置了邮件帐户。
5.按主页按钮,然后再次返回应用程序 - [MFMailComposeViewController canSendMail]
返回YES,应该如此。
此外,当我们打开应用程序,转到设置,删除邮件帐户,返回应用程序时,此行为是可重现的, - 删除后第一个应用程序打开的canSendMail返回YES,第二个应用程序打开时返回NO。 / p>
我在ApplicationDelegate的[MFMailComposeViewController canSendMail]
函数中检查- (void)applicationWillEnterForeground:(UIApplication *)application
。
在我看来,MFMailComposeViewController存储值并且有一些事件迫使它重新读取邮件可用性。此外,我尝试在正确的线程上添加一些等待(1-2秒),或者在邮件设置和运行我的应用程序之间运行其他应用程序 - 没有任何帮助。
您对我如何为canSendMail获得正确价值有任何想法吗?否则,唯一的办法是杀死发现此错误的QA ......
以下代码也不起作用。
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
return [mailClass canSendMail];
}
return NO;
有什么建议吗?