web-dev-qa-db-ja.com

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営業日を費やしますが、成功しません。

24
Truong

コードは正しいように見えます。前述のように、エラーメッセージは、これがUIViewに関係していることを強く示唆しています(特にMFMailではありません)。問題はほぼ確実にコード内のどこかにあり、トラブルシューティングが難しい場合があります。

探すべきいくつかの事柄:

  1. 他のアニメーションまたはビューコントローラの遷移/却下が同時にまたは誤って発生する( おそらくこのように
  2. もちろん、問題を解放/保持します

それでも修正されないように思われる場合は、このメソッドを呼び出すView Controllerで発生している他のすべてをコメントアウトして、それが機能するかどうかを確認してください。

それでも機能しない場合は、失敗したコードの最も単純なバージョンを提示して、さらにトラブルシューティングできるようにします。 :)

2
toblerpwn

この問題は、エラーメッセージの UIViewService reference で示されているように、リモートView Controller(別のプロセスで実行されているView Controller)を表示するときに発生する可能性があります。

SKStoreProductViewControllerを表示するときにこの問題が発生しました。これは、 リモートビューコントローラー でもあります。根本的な原因が何であるかはわかりません。私にとってそれを引き起こしたように思われた唯一のことは、ViewControllerを繰り返し提示することでした。

SKStoreProductViewControllerの場合、loadProductWithParameters:completionBlock:メソッドの完了ブロックでこのエラーを確認できました。 MFMailComposeViewControllerDelegateは、これに関するエラーを含むコールバックを提供しますか?このエラーをリッスンし、ユーザーにエラーメッセージを表示するだけでよい場合があります。

私たちはおそらくこれについてAppleレーダーを提出する必要があります。

3
MaxGabriel

私にとっての問題は、添付関数を呼び出すときの誤った引数でした。電子メールの添付ファイルでこの問題が発生している場合は、 このスレッド にある解決策に従うことをお勧めします。

NSString *path = [self getDatabaseFilePath];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]];
0
Tr0yJ

私はこれが遅い返事であることを知っています、しかし他の誰かを助けるかもしれません。

ちょうど今、同じ問題に直面しています、By resetting the simulatorこれと同じ問題で問題なく動作します。これが役立つかどうか教えてください。

0
kttailor4u

MFMailComposeViewControllerをローカル変数ではなくクラスの強力なプロパティに格納した後、自己終了動作を再現できなくなりました。

0
Geza Fabry

viewDidDisappear:またはviewWillDisappearメソッドに、View Controllerを閉じるようなものはありますか?

そうでない場合は、MFMailComposeViewControllerを提示するViewControllerのコードをさらに投稿できますか?

0
a1phanumeric

MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];

if ([MFMailComposeViewController canSendMail])
{
    mailComposer.mailComposeDelegate = self;
    [mailComposer setToRecipients:[NSArray arrayWithObject:@"[email protected]"] ];
    [mailComposer setSubject:@"Kapsie App Contact Support"];
    [mailComposer setMessageBody:@"Type Your Feedback message here" isHTML:NO];
    [self presentViewController:mailComposer animated:YES completion:nil];
}

上記のコードを使用して、デバイスで確認してください。