情况是MFMailComposeViewController将被呈现。我看到它已经完成了一半,但后来被解雇了。
这是错误:
_serviceViewControllerReady:error:Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3“无法完成操作。(_UIViewServiceInterfaceErrorDomain error 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个工作日来解决这个问题,但没有成功。
答案 0 :(得分:3)
显示远程视图控制器时出现此问题 - 视图控制器在另一个进程中运行 - 如错误消息中的UIViewService
reference所示。
我在显示SKStoreProductViewController
时出现此问题,SKStoreProductViewController
也是remote view controller。我不确定根本原因是什么;似乎唯一触发它的是重复呈现视图控制器。
对于loadProductWithParameters:completionBlock:
,我能够在MFMailComposeViewControllerDelegate
方法的完成块中检查此错误。 {{1}}是否会为您提供有关此错误的回调?可能您所能做的就是侦听此错误并向用户显示错误消息。
我们都应该就此提出一个苹果雷达。
答案 1 :(得分:2)
您的代码看起来是正确的,并且如上所述,错误消息强烈暗示这与UIView
正确(具体而言不是MFMail
)有关。问题几乎肯定存在于代码中的其他位置,并且可能难以排除故障。
要寻找的一些事情:
如果这些都不是修复,请尝试注释掉调用此方法的视图控制器中发生的所有其他事情,然后查看它是否有效。
如果仍然无法使其正常工作,请提供最简单的版本代码,以便我们可以进一步排除故障。 :)
答案 2 :(得分:0)
您的viewDidDisappear:
或viewWillDisappear
方法中是否有任何可以解除视图控制器的内容?
如果没有,您可以为呈现MFMailComposeViewController的ViewController发布更多代码吗?
答案 3 :(得分:0)
我知道这是迟到的回复,但可能对其他人有帮助。
刚才面临同样的问题, resetting the simulator
对我来说同样的问题也适用。如果这有帮助,请告诉我。
答案 4 :(得分:0)
将MFMailComposeViewController存储在我的类的强属性而不是局部变量后,我再也无法重现自解除行为。
答案 5 :(得分:0)
在调用附件功能时,对我来说问题是一个不正确的参数。如果您在使用电子邮件附件时遇到此问题,我建议您按照this thread中的解决方案进行操作,如下所示:
NSString *path = [self getDatabaseFilePath];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]];
答案 6 :(得分:0)
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];
}
使用上面的代码并在设备上查看。
答案 7 :(得分:-1)
在iOS 6中不推荐使用modelViewController, 使用
[self presentViewController:mailView animated:YES completion:nil];
答案 8 :(得分:-1)
我面临同样的问题,解决方案是:
我删除了整个应用程序外观相关代码,如
[[UILabel appearance]setText:@""]
并替换为代码
[[UILabel appearanceWhenContainedIn:[self class], nil] setText:@""];
现在它工作正常所以要小心整体应用程序外观的变化:它可能是导航栏外观,某某