我的实现非常简单:
在.h
文件中,我正在实施MFMailComposeViewControllerDelegate
在.m
文件中,我有以下代码:
-(void)MailCurrentViewAsAttachment
{
if ( [MFMailComposeViewController canSendMail] ) {
MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.delegate = self;
[mailComposer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment.jpg"];
[self presentViewController:mailComposer animated:YES completion:nil];
}
}
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
[self dismissViewControllerAnimated:YES completion:nil];
}
上面的变量imageData
属于UIImage类型,我确信它没有任何问题:所需的图像在撰写邮件窗口中正确显示。
但是,单击“取消”按钮不会忽略“撰写”窗口。我错过了什么?
注意:我正在使用iOS 6和最新版本的xcode,我的应用程序是通用应用程序。
答案 0 :(得分:2)
您正在设置错误的委托。你想要:
mailComposer.mailComposeDelegate = self;
MFMailComposeViewController
延伸UINavigationController
。因此,设置delegate
适用于UINavigationControllerDelegate
。