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
)有关。 这个问题几乎可以肯定地存在于你的代码中的其他地方,并且可能对排除故障具有挑战性。
有些事情要寻找:
- 其他animation或视图控制器转换/解除同时发生或不正确( 可能是这样 )
- 当然,释放/保留问题
如果没有一个看起来像修复,尝试注释视图控制器中调用此方法的一切发生,然后看看它是否工作。
如果仍然无法正常工作,请提供可能出现的代码失败的最简单版本,以便进一步排除故障。 🙂
当显示远程视图控制器(在另一个进程中运行的视图控制器)时,可能会出现此问题,如错误消息中的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:@""];
现在它工作的很好,所以要小心整体应用程序的外观变化:可能是导航栏的外观,等等