MFMailComposeViewController コントローラーを提示し、デリゲートを設定します。iOS 5 ではすべてが期待どおりに動作しますが、デリゲート メソッド (mailComposeController:didFinishWithResult:error:) は iOS6 では呼び出されません。
コード スニペットは次のとおりです。
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:<text>];
[controller setMessageBody:<text> isHTML:NO];
[self presentViewController:controller animated:YES completion:nil];
また、次のデリゲート メソッドは iOS6 では呼び出されませんが、[キャンセル] または [完了] ボタンが押された後、コントローラーは正常に閉じられます。
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
if (error != nil) {
NSLog(@"An error occurred while sending e-mail. %@, %@", error, [error userInfo]);
}
NSLog(@"done with e-mail");
[self dismissViewControllerAnimated:YES completion:nil];
}
どんなアドバイスでも大歓迎です!前もって感謝します。
編集: メソッド viewWillAppear: mailComposeController を提示する私のコントローラーも呼び出されません! それは手がかりになるでしょうか?