我能够在MFMailComposeViewController
委托方法中成功解除我的didFinishWithResult
。但是,我有一个场景,我想在没有用户交互的情况下解雇作曲家,比如选择取消或发送邮件。
我查看过苹果文档但无法找到任何完全有用的内容。我试过调用dismissViewControllerAnimated
,但是当我进入didFinishWithResult
委托方法时,这似乎才有效。无论如何强制该委托方法或者解雇作曲家?
答案 0 :(得分:1)
假设您正在使用UIViewController
展示您的邮件控制器,您可以通过调用UIViewController
方法以编程方式解除它:
dismissViewControllerAnimated:completion:
请参阅此苹果参考:dismissViewControllerAnimated:completion:
你确实提到过:
我试过调用dismissViewControllerAnimated,但这似乎只是 当我在didFinishWithResult委托方法
内时工作
您遇到的问题可能表明存在不同的问题,因为我能够在mailComposeController:didFinishWithResult:error:
委托方法之外成功完成此操作。
示例:强>
-(void)showMail
{
MFMailComposeViewController *mailController = [[[MFMailComposeViewController alloc] init] autorelease];
//Set the message, subject, etc...
//Display
[someViewController presentViewController:mailController animated:YES completion:nil];
//As a proof of concept, close programmatically after a couple of seconds...
[self performSelector:@selector(dismissMailController) withObject:nil afterDelay:2.0];
}
-(void)dismissMailController
{
[someViewController dismissViewControllerAnimated:YES completion:nil];
}