web-dev-qa-db-ja.com

_UIViewServiceInterfaceErrorDomain

MFMailComposeViewControllerに問題があります

このエラーが発生します

viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "The operation couldn’t be completed. (_UIViewServiceInterfaceErrorDomain error 3.)" UserInfo=... {Message=Service Connection Interrupted}

このコードで

- (IBAction) mailbutton:(id)sender 
{

    if([MFMailComposeViewController canSendMail]) 
    {

        [MSAPP.globalMailComposer setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
        [self presentViewController:MSAPP.globalMailComposer animated:YES completion:nil];

    } 
    else 
    {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                    message:@"Unable to mail. No email on this device?"
                                                   delegate:self
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
        [alert show];
        [MSAPP cycleTheGlobalMailComposer];
    }
}
14
macuser101

これは、iOS8シミュレーターの既知の問題です。考えられる回避策については、 この投稿 を参照してください。

MFMailComposeViewControllerを早い段階で割り当てて開始し、必要に応じて1つの静的変数に保持して、静的MFMailComposeViewControllerインスタンスを取得して提示する必要があります。

また、使用するたびに、ほぼ確実にグローバルMFMailComposeViewControllerを「サイクル」する必要があります。同じものを「再利用」することは信頼できません。シングルトンMFMailComposeViewControllerを解放してから再初期化するグローバルルーチンを用意します。使い終わったら毎回電話してください

クレジットは投稿に対して "Joe Blow" に送られます。コードから判断すると、すでにグローバルメールコンポーザーを宣言しています。投稿が示唆するように「リサイクル」してみて、問題が解決するかどうかを確認してください。私は同じ問題を抱えていますが、残念ながらこの解決策では私の問題は解決しません。このソリューションはiOS7.1シミュレーターで機能するが、iOS 8では機能しないことを確認できますが、物理的なiOS8デバイスで機能することが示唆されています。

3
rosshump