【发布时间】:2016-03-09 08:00:16
【问题描述】:
我在几乎所有以前的 iOS 应用程序中都实现了 MFMailComposeViewController,我以前从未遇到过这个问题。我的代码在 iOS 8 中运行良好并立即关闭电子邮件屏幕,但在 iOS 9 中却不一样。我的 HTML 字符串也是正确的,它构成了正确的电子邮件正文。
在 iOS 8 设备上,当我单击电子邮件按钮时,它会打开电子邮件撰写屏幕。我可以保存草稿/取消电子邮件/发送电子邮件,它会立即关闭电子邮件屏幕并返回包含电子邮件按钮的屏幕。
在 iOS 9 设备上,我可以打开电子邮件撰写屏幕,它会显示正确的主题和电子邮件正文,但是当我点击保存草稿/取消电子邮件/发送电子邮件时,它永远不会关闭电子邮件撰写屏幕。
我的代码中没有发现任何错误。苹果是否在 iOS 9 中更改了一些不允许我的代码工作的内容?
//.h file
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface ViewController : UIViewController<MFMailComposeViewControllerDelegate>{
}
@property(nonatomic,assign) id<MFMailComposeViewControllerDelegate> mailComposeDelegate;
- (IBAction)emailThisAdToFriends:(id)sender;
@end
这是我的 .m 文件代码
#import "ViewController.h”
@interface ViewController ()
@end
@implementation ViewController
NSString *finalEmailString;
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)createStringToEmail {
//create finalEmailString which is HTML Code
//html code
}
- (IBAction)emailThisAdToFriends:(id)sender {
//compose email string --(finalEmailString)
[self createStringToEmail];
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
mailViewController.mailComposeDelegate = self;
[mailViewController setSubject:@“mySubject”];
[mailViewController setMessageBody:finalEmailString isHTML:YES];
//present controller
UIViewController *controller = self.view.window.rootViewController;
[controller presentViewController:mailViewController animated: YES completion:nil];
}
else
{
NSLog(@"Device unable to send mail");
}
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result) {
case MFMailComposeResultSent:
{
NSLog(@“Sent email.");
break;
}
case MFMailComposeResultSaved:
{
NSLog(@"saved draft");
break;
}
case MFMailComposeResultCancelled:
{
NSLog(@"cancelled");
break;
}
case MFMailComposeResultFailed:
{
NSLog(@"Mail failed");
break;
}
default:
{
NSLog(@"An error occurred “);
break;
}
}
//dismiss email compose screen
UIViewController *dismissController = self.view.window.rootViewController;
[dismissController dismissViewControllerAnimated:YES completion:NULL];
}
@end
感谢任何帮助。
谢谢。
【问题讨论】:
标签: objective-c ios8 ios9 dismiss mfmailcomposer