0

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 を提示する私のコントローラーも呼び出されません! それは手がかりになるでしょうか?

4

2 に答える 2

0

私は実際にiOS6でのデータ共有にUIActivityViewControllerを使用し、MFMailComposeViewControllerを作成/提示しなかったため、質問は正しくありませんでした。そのため、デリゲートメソッドがトリガーされていませんでした。

于 2013-01-30T16:16:39.230 に答える
-1

私はiOS6で動作する実装を持っており、いくつかの問題もありました.それがあなたのケースで役立つかどうかはわかりませんが、使用する代わりにiOS 5の実装から2つのことを変更しました.

controller.mailComposeDelegate = self;

使った

[controller setMailComposeDelegate:self];

また、 UINavigationControllerDelegate プロトコルがありませんでした

于 2013-01-28T01:46:36.723 に答える