I am calling MFMailComposeViewController
from a UITableViewController
.
Problem is the delegate method is never called when I select Cancel or
I faced the same problem and was searching for a fix from past 2 days then I found a fix myself and you won't believe how minor it was.
In my case the view controller (say 'DetailsTableViewController' as per this question) from where I was presenting the MFMailComposeViewController
is already being presented from some other view controller (say 'BaseViewController').
The issue was lying in the 'modalPresentationStyle
' of 'DetailsTableViewController' while presenting it from BaseViewController.
The moment I changed it from 'UIModalPresentationFormSheet
' to 'UIModalPresentationPageSheet
' (for that matter any thing other than 'UIModalPresentationFormSheet
') issue got resolved and mail controller delegate methods started firing as usual.
Note: I was already calling the below method in 'DetailsTableViewController' (for this example) so it didn't really matter for me which 'modalPresentationStyle
' I was using.
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
self.view.superview.bounds = CGRectMake(0, 0, 1024, 768);
self.view.superview.backgroundColor = [UIColor clearColor];
}