Я реализовал MFMailComposeViewController почти во всех моих предыдущих приложениях iOS, и я никогда не получал эту проблему раньше. Мой код отлично работает в iOS 8 и сразу же отключает экран электронной почты, но он не делает то же самое в iOS 9. Моя строка HTML также правильна и содержит правильное тело сообщения электронной почты.Отключить экран MFMailCompose в iOS 9 - Работает отлично в iOS 8
На устройстве 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
Любая помощь приветствуется.
Спасибо.
Спасибо. Я попытаюсь проверить, работает ли это. У меня сейчас нет устройства iOS 9, поэтому мне потребуется несколько дней. –