无法在设备上打开MFMailComposeViewController,在模拟器中工作。

时间:2011-10-21 06:54:39

标签: iphone ipad

我这样做是在模拟器中工作但是当我们尝试在设备中打开时,程序正在终止。

Plz快速建议我。

MFMailComposeViewController *mail=[[MFMailComposeViewController alloc]init];
mail.mailComposeDelegate=self;  
[mail setToRecipients:[NSArray arrayWithObjects:@"marketing@realestateinvestar.com.au",nil]];

//[self becomeFirstResponder];
mail.navigationBar.tintColor=[UIColor blackColor];
[self presentModalViewController:mail animated:YES];

3 个答案:

答案 0 :(得分:0)

您的代码看起来不错,但是您是否检查设备是否可以发送邮件:

if ([MFMailComposeViewController canSendText]) {
   MFMailComposeViewController *mail=[[MFMailComposeViewController alloc]init];
   mail.mailComposeDelegate=self;  
   [mail setToRecipients:[NSArray arrayWithObjects:@"marketing@realestateinvestar.com.au",nil]];

   mail.navigationBar.tintColor=[UIColor blackColor];
   [self presentModalViewController:mail animated:YES];
   [mail release], mail = nil;
} else {
    // show message to the use that he can't send an email.
}

答案 1 :(得分:0)

您是否在代码中实现了MFMailComposeViewControllerdelegate方法?

#pragma mark --------------------------------------------
#pragma mark MFMailComposeViewController delegate Methods

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
    switch (result) {  
        case MFMailComposeResultCancelled:  
            NSLog(@"Mail send canceled.");  
            /* 
             Execute your code for canceled event here ... 
             */  
            break;  
        case MFMailComposeResultSaved:  
            NSLog(@"Mail saved.");  
            /* 
             Execute your code for email saved event here ... 
             */  
            break;  
        case MFMailComposeResultSent: {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Mail Sent" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            alert.tag = 1;
            alert.delegate = self;
            [alert show];
            [alert release];
            break;  
        }
        case MFMailComposeResultFailed: {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Mail Sending Failed" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            alert.tag = 2;
            alert.delegate = self;
            [alert show];
            [alert release];
            break;  
        }
        default:  
            break;  
    }
    [controller dismissModalViewControllerAnimated:YES];//dismissing modal view controller
}

答案 2 :(得分:0)

if ([MFMessageComposeViewController canSendText])

你的问题就在这里。您正在尝试检查设备是否能够发送短信而不是电子邮件。你应该尝试使用

if([MFMailComposeViewController canSendMail])

问题可能是您的设备未配置为邮件中的任何帐户。请检查一次。