使用iOS 6不会调用MFMailComposeViewControllerDelegate方法

时间:2013-01-27 17:44:03

标签: ios ios6 delegates mfmailcomposeviewcontroller

我提出了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也没有被调用!这可能是一个线索吗?

2 个答案:

答案 0 :(得分:0)

问题是不正确的,因为我实际上在iOS6中使用UIActivityViewController进行数据共享,并且没有创建/呈现MFMailComposeViewController。这就是为什么我没有看到触发委托方法的原因。

答案 1 :(得分:-1)

我有一个在iOS6上工作的实现并且也遇到了一些问题,听起来很糟糕,不知道它是否对你的情况有帮助但是我改变了iOS 5实现中的2件而不是使用

controller.mailComposeDelegate = self;

我用过

[controller setMailComposeDelegate:self];

另外,我错过了UINavigationControllerDelegate协议