我提出了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也没有被调用!这可能是一个线索吗?
答案 0 :(得分:0)
问题是不正确的,因为我实际上在iOS6中使用UIActivityViewController进行数据共享,并且没有创建/呈现MFMailComposeViewController。这就是为什么我没有看到触发委托方法的原因。
答案 1 :(得分:-1)
我有一个在iOS6上工作的实现并且也遇到了一些问题,听起来很糟糕,不知道它是否对你的情况有帮助但是我改变了iOS 5实现中的2件而不是使用
controller.mailComposeDelegate = self;
我用过
[controller setMailComposeDelegate:self];
另外,我错过了UINavigationControllerDelegate协议