0

我展示了 MFMailComposeViewController 控制器并将其设置为委托 - 在 iOS 5 中一切正常,但在 iOS6 中未调用委托方法 (mailComposeController:didFinishWithResult:error:)。

以下是代码片段:

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 实现中改变了两件事,而不是使用

controller.mailComposeDelegate = self;

我用了

[controller setMailComposeDelegate:self];

另外,我错过了 UINavigationControllerDelegate 协议

于 2013-01-28T01:46:36.723 回答