我有一个棘手的问题。在我的一个应用程序中,下载量超过150.000 ...我遇到的问题很少发生,而且似乎无法解决。
问题如下:在用户可以通过电子邮件共享列表的视图中,我使用MFMailComposeViewController
打开邮件窗口。但是,在某些情况下,使用邮件编辑器似乎会使应用程序出现问题。用户按下共享按钮,邮件窗口向上滑动,等待大约1-2秒,然后再次关闭。邮件窗口中没有内容,尽管我确实向其发送数据。我本人无法在任何设备或模拟器上重新创建问题,但是一位同事却可以。我在他的手机上使用XCode运行了该应用程序,并在日志中得到了以下内容:
2013-03-01 14:43:39.604 appname[318:907] <MFMailComposeRemoteViewController: 0x1ebfb100> timed out waiting for fence barrier from com.apple.MailCompositionService
2013-03-01 14:43:39.631 appname[318:907] viewServiceDidTerminateWithError: Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"
我用Google搜索错误“超时,等待com.apple.MailCompositionService的栅栏屏障”,但找不到真正的帮助。
有人对此有任何经验吗?我该如何解决?
我打开视图的代码:
-(void)displayComposerSheetWithBodyString:(NSString *)aBody
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc]init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Lista"];
NSString *emailBody = aBody;
[picker setMessageBody:emailBody isHTML:NO];
[self.navigationController presentModalViewController:picker animated:YES];
}
else
{
[[[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Din enhet är inte redo att skicka e-post. Kontrollera dina inställningar", nil)
message:nil
delegate:self
cancelButtonTitle:NSLocalizedString(@"OK", nil)
otherButtonTitles:nil]
show];
}
}
不确定您是否已解决问题,但是我最近在我的项目中已经解决过。
我所做的一种解决方法是在较早的阶段分配并初始化MFMailComposeViewController,并将其保存在一个静态变量中,只要需要,就获取静态MFMailComposeViewController实例并将其呈现。
似乎对我有用,希望它也对您有用。
一个有同样的问题,这个修复程序对我有帮助:
https://twitter.com/christian_beer/statuses/321295533077565440
“ @ nathangaskin好……很久以前了:)但是,如果我没记错的话,在我从UIAppearance代码中删除了自定义字体之后,它就可以工作了。
对我来说很好。
另外,第二种选择是将显示呼叫简单地包装到
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
block
我有完全相同的问题。我认为我已将其确定为制定消息正文字符串所需的时间。
我尝试了接受的解决方案和dispatch_after,但我的问题没有解决。 MMFMailComposeRemoteViewController在xcode 10中工作正常,并在xcode 11中停止工作。在xcode 11中是否还有其他人遇到问题?