2010-11-05 5 views
4

J'ai des difficultés à fermer un e-mail que j'ai soulevé.iPhone: comment fermer MFMailComposeViewController?

L'email s'ouvre bien, mais une fois ouvert, il ne se fermera pas comme mailComposeController: mailer didFinishWithResult: erreur de résultat: le gestionnaire d'erreur n'est jamais invoqué. Pour autant que je sache, j'ai tous les bits en place pour être en mesure de le faire.

Quelqu'un at-il une idée de ce que je peux regarder?

Voici comment je lève l'e-mail:

-(IBAction)emailButtonPressed 
{ 

NSString * text = @ "Mon E-mail Texte";

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
mailer.delegate = self; 

[mailer setSubject:@"Note"]; 
[mailer setMessageBody:text isHTML:NO]; 
[self presentModalViewController:mailer animated:YES]; 
[mailer release]; 
} 

et plus tard dans la classe que j'ai ce code pour gérer la fin (mais il ne sera jamais appelé):

-(void)mailComposeController:(MFMailComposeViewController *)mailer didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
[self becomeFirstResponder]; 
[mailer dismissModalViewControllerAnimated:YES]; 
} 

Mon fichier d'en-tête est défini comme:

#import <UIKit/UIKit.h> 
#import <MessageUI/MessageUI.h> 
#import <MessageUI/MFMailComposeViewController.h> 

@interface myViewController : UIViewController <UIActionSheetDelegate, UIAlertViewDelegate, MFMailComposeViewControllerDelegate, UINavigationControllerDelegate> 

Merci

Iphaaw

Répondre

10

Vous définissez le mauvais délégué, la propriété délégué MFMailComposeViewController est appelé mailComposeDelegate, il devrait donc être:

mailer.mailComposeDelegate = self; 

Une autre erreur possible, je peux voir appelle dismissModalViewControllerAnimated: sur mailer - vous devez envoyer ce message au contrôleur de vue qui a présenté l'interface de messagerie - self dans ce cas:

[self dismissModalViewControllerAnimated:YES]; 

j'ai écrit « erreur possible », car il pourrait en fait fonctionner si les routes iOS le message à travers la chaîne de répondeur, de toute façon - la documentation indique qu'il devrait être envoyé à présentateur.

+0

Merci - c'est corrigé. On dirait que mon livre était faux :-( – iphaaw

+0

Merci aussi - j'ai eu le même problème (je pensais que c'était ma déclaration de soi en tant que moi faible, s'est avéré être la ligne d'installation de délégué!) :) –

Questions connexes