MFMailComposeViewController立即解散

情况是MFMailComposeViewController将要呈现。 我看到它是中途完成的,但是却被解雇了。

这是错误的:

_serviceViewControllerReady:error:Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3“该操作无法完成(_UIViewServiceInterfaceErrorDomain错误3.)”

这是我的源代码来展示MFMailComposeViewController:

-(void) MailExecute { if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; mailViewController.mailComposeDelegate = self; [mailViewController setSubject:NSLocalizedString(@"Check this new look", @"")]; [mailViewController setMessageBody: @"my new look" isHTML:YES]; [self presentModalViewController:mailViewController animated:YES]; [mailViewController release]; } else { UIAlertView *alertInternal = [[UIAlertView alloc] initWithTitle: NSLocalizedString(@"Notification", @"") message: NSLocalizedString(@"You have not configured your e-mail client.", @"") delegate: nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil]; [alertInternal show]; [alertInternal release]; } } 

奇怪的一点是有时会发生,有时并不会。 请帮助我! 我花了将近1个工作日的时间解决这个问题,但没有成功。

你的代码看起来是正确的, MFMail ,错误信息强烈表明这与UIView本身(不是特定的MFMail )有关。 这个问题几乎可以肯定地存在于你的代码中的其他地方,并且可能对排除故障具有挑战性。

有些事情要寻找:

  1. 其他animation或视图控制器转换/解除同时发生或不正确( 可能是这样 )
  2. 当然,释放/保留问题

如果没有一个看起来像修复,尝试注释视图控制器中调用此方法的一切发生,然后看看它是否工作。

如果仍然无法正常工作,请提供可能出现的代码失败的最简单版本,以便进一步排除故障。 🙂

当显示远程视图控制器(在另一个进程中运行的视图控制器)时,可能会出现此问题,如错误消息中的UIViewService引用所示 。

在显示SKStoreProductViewController ,我遇到了这个问题,它也是一个远程视图控制器 。 我不确定根本原因是什么; 似乎触发了我的唯一的事情是反复呈现视图控制器。

对于SKStoreProductViewController我能够在loadProductWithParameters:completionBlock:方法的完成块中检查这个错误。 MFMailComposeViewControllerDelegate是否给你一个有关这个错误的callback? 这可能是所有你能做的就是听这个错误,并向用户显示错误信息。

我们应该都可以提交一个关于这个的苹果雷达。

你有什么在你的viewDidDisappear:viewWillDisappear方法,将closures视图控制器?

如果不是的话,你可以发布更多的代码给ViewController来展示MFMailComposeViewController吗?

我知道这是迟到的答复,但可能会帮助其他人。

刚刚面对同样的问题,通过resetting the simulator工作罚款为我同样的问题。 让我知道这是否有帮助。

在将MFMailComposeViewController存储在我的类的强属性(而不是本地variables)后,我无法再重现自我解散行为。

调用附件函数时,对我来说问题是一个不正确的参数。 如果你有这个电子邮件附件的问题,我build议按照下面的解决schemefind这个线程 ,如下所示:

 NSString *path = [self getDatabaseFilePath]; NSData *myData = [NSData dataWithContentsOfFile:path]; [picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]]; 

MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];

 if ([MFMailComposeViewController canSendMail]) { mailComposer.mailComposeDelegate = self; [mailComposer setToRecipients:[NSArray arrayWithObject:@"support@kapsie.com"] ]; [mailComposer setSubject:@"Kapsie App Contact Support"]; [mailComposer setMessageBody:@"Type Your Feedback message here" isHTML:NO]; [self presentViewController:mailComposer animated:YES completion:nil]; } 

使用上面的代码并在设备上检查它。

使用modelViewController在iOS 6中已被弃用,请使用

 [self presentViewController:mailView animated:YES completion:nil]; 

我面临同样的问题,解决scheme是:

我删除了整个应用程序出现相关的代码

 [[UILabel appearance]setText:@""] 

并用代码replace

 [[UILabel appearanceWhenContainedIn:[self class], nil] setText:@""]; 

现在它工作的很好,所以要小心整体应用程序的外观变化:可能是导航栏的外观,等等