发送带有照片附件的应用内电子邮件后,即使我点击发送或取消,电子邮件窗口也不会关闭



我遇到了一点麻烦,我花了半天的时间来处理这个问题,在iOS6和其他问题中进行了所有的抨击之后,我没有得到任何重大结果。这个iOS应用程序有一个发送电子邮件的选项,当按下按钮后,该应用程序会截图我的WebView,将其附加到电子邮件上,然后从那里,可以取消或发送电子邮件并返回应用程序。我进入了弹出电子邮件的部分,实际上这里有两个问题:一个是在按下"取消"或"发送"后,电子邮件视图不会消失,应用程序卡在电子邮件视图中。我的第二个问题是,所附的图像只是一个小图标(蓝色带问号,就像它没有被识别或丢失一样。。。当我觉得自己快要疯了的时候,有人能给我指一指正确的方向吗。我前后都在研究球网,但运气不好。不幸的是,许多相似但不同的问题与我的问题并不完全相关。对不起,提前谢谢。这是我的代码:

// in my LiveView.h file
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import <MessageUI/MessageUI.h>
#import "CamSetup.h"
@interface LiveView : UIViewController < MFMailComposeViewControllerDelegate ,   ADBannerViewDelegate >  
....
-(IBAction)shotAndSend:(id)sender;

// in my LiveView.m file:

- (void)mailComposer:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{
NSLog(@"in didFinishWithResult:");
switch (result) 
{
case MFMailComposeResultCancelled:
NSLog(@"cancelled");
break;
case MFMailComposeResultSaved:
NSLog(@"saved");
break;
case MFMailComposeResultSent:
NSLog(@"sent");
break;
case MFMailComposeResultFailed: {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error sending mail",@"Error sending mail")
message:[error localizedDescription] delegate:nil
cancelButtonTitle:NSLocalizedString(@"test",@"test")
otherButtonTitles:nil];
[alert show];
break;
}
default: break;
}
[self dismissViewControllerAnimated:NO completion:Nil];
}
-(IBAction)shotAndSend:(id)sender
{
UIGraphicsBeginImageContext(_myWebView.frame.size);
[_myWebView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * imageData = UIImageJPEGRepresentation (image, 2.1);
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.mailComposeDelegate = self;
[mailComposer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment.jpeg"];
[mailComposer setSubject:@"A screenshot from my App"];
[mailComposer setToRecipients:[NSArray arrayWithObjects:@"123@yexample.com", nil]];
[self presentViewController: mailComposer animated:YES completion:NULL];
}
}

您的代码无法工作,因为您使用了错误的方法。您有:

- (void)mailComposer:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error

但应该是:

- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error

您需要一个视图的委托,它将为您解除该视图
您没有看到日志这一事实表明您没有正确实现委派协议。看看苹果文档中的一些例子。

最新更新