使用MFMailComposeViewController时的问题

问题描述 投票:27回答:3

我有一个棘手的问题。在我的一个应用程序中,下载量超过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];
    }
}
ios objective-c mfmailcomposeviewcontroller mfmailcomposer
3个回答
11
投票

不确定您是否已解决问题,但是我最近在我的项目中已经解决过。

我所做的一种解决方法是在较早的阶段分配并初始化MFMailComposeViewController,并将其保存在一个静态变量中,只要需要,就获取静态MFMailComposeViewController实例并将其呈现。

似乎对我有用,希望它也对您有用。


5
投票

一个有同样的问题,这个修复程序对我有帮助:

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


4
投票

我有完全相同的问题。我认为我已将其确定为制定消息正文字符串所需的时间。


0
投票

我尝试了接受的解决方案和dispatch_after,但我的问题没有解决。 MMFMailComposeRemoteViewController在xcode 10中工作正常,并在xcode 11中停止工作。在xcode 11中是否还有其他人遇到问题?

© www.soinside.com 2019 - 2024. All rights reserved.