Unable to dismiss MFMailComposeViewController, delegate not called
Make sure you use
controller.mailComposeDelegate = self;
and not
controller.delegate = self;
Your method signature is incorrect:
- (void)mailComposeController:(MFMailComposeViewController*)controllerdidFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
Should be:
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
Refer this article for full implementation : http://www.ioscreator.com/tutorials/send-email-from-an-app
working code after making removing deprecated one :
#import <MessageUI/MFMailComposeViewController.h>@interface SettingsTableViewController () <MFMailComposeViewControllerDelegate, UITextFieldDelegate, UITextViewDelegate>@end@implementation SettingsTableViewController// add default methods-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger sectionNum = indexPath.section; NSInteger rowNum = indexPath.row; if (sectionNum == 2 && rowNum == 1) { MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; controller.mailComposeDelegate = self; if ([MFMailComposeViewController canSendMail]) { [controller setSubject:[NSString stringWithFormat:@"Invitation to Northstar app"]]; [controller setMessageBody:@" " isHTML:NO];// [controller setToRecipients:[NSArray arrayWithObject:[item objectForKey:@"email"]]]; //presentViewController:animated:completion: [self presentViewController:controller animated:YES completion:NULL]; } }}- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{ NSLog (@"mail finished"); [self dismissViewControllerAnimated:YES completion:NULL];}@end