2011-04-26 2 views
0

Je teste sur un système d'exploitation en cours d'exécution iPod Touch 3.1.3MFMailComposeViewController charge un écran blanc

Essayer de permettre aux utilisateurs d'envoyer un e-mail à partir de l'application - mais lorsque le code suivant est exécuté, l'écran entier tourne juste complètement blanc/blanc.

Des idées sur pourquoi cela se passe-t-il? J'ai le framework MessageUI dans le projet. Je l'importation et la délégation dans le fichier d'en-tête:

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

Et voici le code, assez standard:

if ([MFMailComposeViewController canSendMail]) { 
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    picker.mailComposeDelegate = self; 

    [picker setSubject:@"App Feedback"]; 
    [picker setToRecipients:[NSArray arrayWithObject:@"[email protected]"]]; 

    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 
    } 

Et puis j'ai la fonction didFinishWithResult que de rejeter le ModalViewController lorsque l'e-mail a a été envoyé.

Mais encore une fois, tout ce que je reçois est un écran blanc vide sur mon iPod Touch. =/

Merci!

+0

Pourquoi avez-vous utilisé le nom 'picker' pour le contrôleur Mail? –

+0

Vous pouvez utiliser le nom que vous voulez - vous créez un nouveau sélecteur MFMailComposeViewController et le nommez * ou * picklesAndCheese ou ce que vous voulez – RanLearns

+0

Wow, cette question a plus de trois ans. Je n'ai plus aucun problème avec la composition d'email mais je ne fais plus rien avec iOS 3.1.3 ... =) – RanLearns

Répondre

0
if([MFMailComposeViewController canSendMail]){ 

     MFMailComposeViewController *mail=[[MFMailComposeViewController alloc]init]; 
     mail.mailComposeDelegate=self; 
     [mail setSubject:@"App Feedback"];   
     [mail setMessageBody:@"*your message content*" isHTML:NO]; 
     [self presentModalViewController:mail animated:YES]; 
     [mail release];   
    } 

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

} 
0

Vous pouvez regarder exemple de code d'Apple: http://developer.apple.com/library/ios/#samplecode/MessageComposer/Listings/Classes_MessageComposerViewController_m.html

- (IBAction) showMailPicker: (id) sender {

Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); 

if (mailClass != nil) { 
     [self displayMailComposerSheet]; 

    if ([mailClass canSendMail]) { 
     [self displayMailComposerSheet]; 
    } 
    else { 
     feedbackMsg.hidden = NO; 
     feedbackMsg.text = @"Device not configured to send mail."; 
    } 
} 
else { 
    feedbackMsg.hidden = NO; 
    feedbackMsg.text = @"Device not configured to send mail."; 
} 

}

- (void) displayMailComposerSheet { MFMailComposeViewController * picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self;

[picker setSubject:@"Hello from California!"]; 



NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

[picker setToRecipients:toRecipients]; 
[picker setCcRecipients:ccRecipients]; 
[picker setBccRecipients:bccRecipients]; 


NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"]; 
NSData *myData = [NSData dataWithContentsOfFile:path]; 
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy"]; 


NSString *emailBody = @"It is raining in sunny California!"; 
[picker setMessageBody:emailBody isHTML:NO]; 

[self presentModalViewController:picker animated:YES]; 
[picker release]; 

} - (void) mailComposeController: (MFMailComposeViewController *) Contrôleur didFinishWithResult: (MFMailComposeResult) Erreur de résultat: (NSError *) erreur {

feedbackMsg.hidden = NO; 
// Notifies users about errors associated with the interface 
switch (result) 
{ 
    case MFMailComposeResultCancelled: 
     feedbackMsg.text = @"Result: Mail sending canceled"; 
     break; 
    case MFMailComposeResultSaved: 
     feedbackMsg.text = @"Result: Mail saved"; 
     break; 
    case MFMailComposeResultSent: 
     feedbackMsg.text = @"Result: Mail sent"; 
     break; 
    case MFMailComposeResultFailed: 
     feedbackMsg.text = @"Result: Mail sending failed"; 
     break; 
    default: 
     feedbackMsg.text = @"Result: Mail not sent"; 
     break; 
} 
[self dismissModalViewControllerAnimated:YES]; 

}

Questions connexes