状況は、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営業日を費やしますが、成功しません。
コードは正しいように見えます。前述のように、エラーメッセージは、これがUIView
に関係していることを強く示唆しています(特にMFMail
ではありません)。問題はほぼ確実にコード内のどこかにあり、トラブルシューティングが難しい場合があります。
探すべきいくつかの事柄:
それでも修正されないように思われる場合は、このメソッドを呼び出すView Controllerで発生している他のすべてをコメントアウトして、それが機能するかどうかを確認してください。
それでも機能しない場合は、失敗したコードの最も単純なバージョンを提示して、さらにトラブルシューティングできるようにします。 :)
この問題は、エラーメッセージの UIViewService
reference で示されているように、リモートView Controller(別のプロセスで実行されているView Controller)を表示するときに発生する可能性があります。
SKStoreProductViewController
を表示するときにこの問題が発生しました。これは、 リモートビューコントローラー でもあります。根本的な原因が何であるかはわかりません。私にとってそれを引き起こしたように思われた唯一のことは、ViewControllerを繰り返し提示することでした。
SKStoreProductViewController
の場合、loadProductWithParameters:completionBlock:
メソッドの完了ブロックでこのエラーを確認できました。 MFMailComposeViewControllerDelegate
は、これに関するエラーを含むコールバックを提供しますか?このエラーをリッスンし、ユーザーにエラーメッセージを表示するだけでよい場合があります。
私たちはおそらくこれについてAppleレーダーを提出する必要があります。
私にとっての問題は、添付関数を呼び出すときの誤った引数でした。電子メールの添付ファイルでこの問題が発生している場合は、 このスレッド にある解決策に従うことをお勧めします。
NSString *path = [self getDatabaseFilePath];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]];
私はこれが遅い返事であることを知っています、しかし他の誰かを助けるかもしれません。
ちょうど今、同じ問題に直面しています、By resetting the simulator
これと同じ問題で問題なく動作します。これが役立つかどうか教えてください。
MFMailComposeViewControllerをローカル変数ではなくクラスの強力なプロパティに格納した後、自己終了動作を再現できなくなりました。
viewDidDisappear:
またはviewWillDisappear
メソッドに、View Controllerを閉じるようなものはありますか?
そうでない場合は、MFMailComposeViewControllerを提示するViewControllerのコードをさらに投稿できますか?
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];
}
上記のコードを使用して、デバイスで確認してください。