[Résolu] - Problème lors de l'appel à  MFMailComposeViewController

walslayerwalslayer Membre
octobre 2012 modifié dans Vos applications #1
Bonjour à  tous, je viens de nouveau voir consulter car j'essaye d'intégrer l'application mail dans ma propre application pour ainsi éviter de quitter celle-ci. J'ai suivi la documentation d'Apple qui permet de faire appel à  MFMaimComposeViewController. J'ai bien définit mon header et mon main, le problème est que lorsque je clique sur le bouton afin d'ouvrir la vue, j'obtient une vue noire avec la barre de statut du mail (sans les boutons cancel et send). J'ai bien ajouté le Framework MessageUI. Je ne comprend donc pas d'ou vient l'erreur. Si vous avez une idée, voici le code que j'utilise :



Le fchier .h


<br />
#import &lt;MessageUI/MessageUI.h&gt;<br />
@interface mailComposerViewController : UIViewController &lt;MFMailComposeViewControllerDelegate&gt;<br />
{<br />
	IBOutlet UILabel *message;<br />
}<br />
@property (nonatomic, retain) IBOutlet UILabel *message;<br />
-(IBAction)sendMail;<br />
@end<br />




Le fichier .m


<br />
#import &quot;mailComposerViewController.h&quot;<br />
@implementation mailComposerViewController<br />
@synthesize message;<br />
-(IBAction)sendMail<br />
{<br />
	if ([MFMailComposeViewController canSendMail]) {<br />
		MFMailComposeViewController *mfViewController = [[MFMailComposeViewController alloc] init];<br />
		mfViewController.mailComposeDelegate = self;<br />
	  <br />
		[self presentModalViewController:mfViewController animated:YES];<br />
	}else {<br />
		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&quot;Status:&quot; message:@&quot;Your phone is not currently configured to send mail.&quot; delegate:nil cancelButtonTitle:@&quot;ok&quot; otherButtonTitles:nil];<br />
	  <br />
		[alert show];<br />
	}<br />
}<br />
#pragma mark MFMailComposeViewControllerDelegate Methods<br />
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error<br />
{<br />
	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&quot;Status:&quot; message:@&quot;&quot; delegate:nil cancelButtonTitle:@&quot;ok&quot; otherButtonTitles:nil];<br />
  <br />
	switch (result) {<br />
		case MFMailComposeResultCancelled:<br />
			alert.message = @&quot;Message Canceled&quot;;<br />
			break;<br />
		case MFMailComposeResultSaved:<br />
			alert.message = @&quot;Message Saved&quot;;<br />
			break;<br />
		case MFMailComposeResultSent:<br />
			alert.message = @&quot;Message Sent&quot;;<br />
			break;<br />
		case MFMailComposeResultFailed:<br />
			alert.message = @&quot;Message Failed&quot;;<br />
			break;<br />
		default:<br />
			alert.message = @&quot;Message Not Sent&quot;;<br />
			break;<br />
	}<br />
  <br />
	[self dismissModalViewControllerAnimated:YES];<br />
  <br />
	[alert show];<br />
}<br />
@end<br />




Je vous remercie par avant pour vos réponse.



Bien cordialement Walslayer.

Réponses

  • CéroceCéroce Membre, Modérateur
    Pas de problème avec ton code à  première vue.

    (Le seul truc, à  la limite, c'est qu'il est déconseillé sous iOS 6 d'utiliser presentModalViewController:)
  • walslayerwalslayer Membre
    octobre 2012 modifié #3
    Merci pour ta réponse, j'ai rectifié le tir image/thumbsup.gif' class='bbc_emoticon' alt='' /> en utilisant


    <br />
    [self presentViewController:mailCompose animated:YES completion:nil];<br />
    




    Par contre je n'ai pas trop compris l'utilité de completion, du coup je l'ai mis à  nil.



    Par contre je me suis rendu compte que j'avais créer une vue avec le storyboard et que j'essayais d'associer cette vue à  mon controlleur. Alors qu'au même moment dans mon controlleur je faisait un alloc. J'ai supprimé l'association entre ma vue et mon controlleur et j'obtient donc ce que je voulais. Par contre je vois que je ne récupère pas le sujet et le message dans ma vue mail. Je récupère des infos bizarre (comme si mes variable n'étaient pas initialisées..).



    Voici mon fichier .h
    <br />
    #import &lt;UIKit/UIKit.h&gt;<br />
    #import &quot;MessageUI/MessageUI.h&quot;<br />
    @interface mailComposeViewController : UIViewController &lt;MFMailComposeViewControllerDelegate&gt;<br />
    @property (weak, nonatomic) IBOutlet UITextField *sujet;<br />
    @property (weak, nonatomic) IBOutlet UITextView *message;<br />
    - (IBAction)envoyerMessage:(UIButton *)sender;<br />
    @end<br />
    




    Et mon fichier .m


    <br />
    #import &quot;mailComposeViewController.h&quot;<br />
    @interface mailComposeViewController ()<br />
    @end<br />
    @implementation mailComposeViewController<br />
    @synthesize message;<br />
    @synthesize sujet;<br />
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil<br />
    {<br />
    	self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];<br />
    	if (self) {<br />
    		// Custom initialization<br />
    	}<br />
    	return self;<br />
    }<br />
    - (void)viewDidLoad<br />
    {<br />
    	[super viewDidLoad];<br />
    // Do any additional setup after loading the view.<br />
    }<br />
    - (void)didReceiveMemoryWarning<br />
    {<br />
    	[super didReceiveMemoryWarning];<br />
    	// Dispose of any resources that can be recreated.<br />
    }<br />
    - (void)viewDidUnload {<br />
    	[self setSujet:nil];<br />
    	[self setMessage:nil];<br />
    	[super viewDidUnload];<br />
    }<br />
    - (IBAction)envoyerMessage:(UIButton *)sender {<br />
    	MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];<br />
            mailCompose.mailComposeDelegate = self;<br />
    	NSArray *emailAdresse = [[NSArray alloc] initWithObjects:@&quot;morgan.gruson@gmail.com&quot;, nil];<br />
      <br />
    	NSString *sendSujet = [[NSString alloc] initWithFormat:@&quot;%@&quot;, self.sujet.text];<br />
    	NSString *sendMessage = [[NSString alloc] initWithFormat:@&quot;%@&quot;, self.message.text];<br />
      <br />
    	[mailCompose setToRecipients:emailAdresse];<br />
    	[mailCompose setSubject:sendSujet];<br />
    	[mailCompose setMessageBody:sendMessage isHTML:NO];<br />
      <br />
    	[self presentViewController:mailCompose animated:YES completion:nil];<br />
    }<br />
    -(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error<br />
    {<br />
    	[self dismissViewControllerAnimated:YES completion:nil];<br />
    }<br />
    @end<br />
    




    Merci de votre attention image/clap.gif' class='bbc_emoticon' alt=' :D ' />
Connectez-vous ou Inscrivez-vous pour répondre.