Ich habe eine Klasse, die Unterklasse NSObject mit einer Funktion einen MFMailComposeViewController anzeigen. Hier ist der Code:MFMailComposeViewController nicht mit Abbrechen Abbrechen Schaltfläche
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
[mailController setSubject:@"Sample Subject"];
[mailController setMessageBody:@"Here is some main text in the email!" isHTML:NO];
[mailController setToRecipients:@[self.email]];
UITabBarController *tabbarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = tabbarController.selectedViewController;
[navigationController.topViewController presentViewController:mailController animated:YES completion:NULL];
Alles funktioniert gut mit diesem Code. Das Problem ist, wenn ich die MFMailComposeViewController
ablehnen möchte. Irgendwann bekomme ich einen Unfall, manchmal passiert einfach nichts. Ich habe die Delegierten Funktion implementiert:
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
UITabBarController *tabbarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *navigationController = tabbarController.selectedViewController;
[navigationController.topViewController dismissViewControllerAnimated:YES completion:nil];
}
Danach habe ich versucht, es zu zeigen und entlassen directlty von einem Viewcontroller und alles funktioniert. Sogar die Abbrechen-Taste.
Ich weiß nicht, warum es in meiner ViewController-Klasse funktioniert, aber nicht in meiner Unterklasse von NSObject.
Wenn ich den Absturz ich in den Protokollen gesehen habe:
-[MFMailComposeInternalViewController _notifyCompositionDidFinish]
haben Sie fügen MFMailComposeViewDelegat hinzu e in der Header-Datei ...? –
Ja, habe ich. Nun, ich habe es in der .m-Datei hinzugefügt, aber es ist dasselbe. –
Geben Sie einige Informationen zum Crash-Protokoll ein, um weitere Hilfe zu erhalten. –