ios - App crashes when InApp mail command gets called

孤人 提交于 2019-12-23 18:27:44

问题


When I cll the Message Compose sheet via a UIActionSheet button I get the following error. Sorry these don't mean much to me yet - still learning:-)

Could anyone help please?

These are the sources of problems that come up.

This is in the log:

2012-06-16 19:10:43.437 Multi Web[2665:4013] XPCProxy received bad message: target did not supply method signature for bodyFinishedDrawing 2012-06-16 19:10:43.489 Multi Web[2665:907] _serviceViewControllerReady:error: Error Domain=XPCObjectsErrorDomain Code=3 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 3.)"

Cheers Jeff

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

        NSString *subject = [[NSString alloc] initWithFormat:@"Multi Web - Sending %@.txt", _documentFile];

        [mailer setSubject:subject];

        // Attach an image to the email
        NSString *pathFile01 = [NSString stringWithFormat:_documentTXTPath];
        NSURL *pdfURLFile01 =  [NSURL URLWithString:pathFile01];
        NSData *pdfDataFile01 = [NSData dataWithContentsOfURL:pdfURLFile01];
        NSString *fileName = [[NSString alloc] initWithFormat:@"%@.txt", _documentFile];
        [mailer addAttachmentData:pdfDataFile01 mimeType:@"application/txt" fileName:fileName];

        NSString *emailBody = 
       @"Hi,<br><br>Please find attached the note exported from Multi Web.<br/><br/>Thanks you for using the app.<br/><br/>Kind Regards,<br/>Multi Web Team.";


        [mailer setMessageBody:emailBody isHTML:YES];

        [self presentModalViewController:mailer animated:YES];
    }

    // Remove the mail view
    [self dismissModalViewControllerAnimated:YES];



- (void)mailComposeController:(MFMailComposeViewController*)controller  didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
 {
 switch (result)
 {
    case MFMailComposeResultCancelled:
        NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued.");
        break;
    case MFMailComposeResultSaved:
        NSLog(@"Mail saved: you saved the email message in the drafts folder.");
        break;
    case MFMailComposeResultSent:
        NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send.");
        break;
    case MFMailComposeResultFailed:
        NSLog(@"Mail failed: the email message was not saved or queued, possibly due to an error.");
        break;
    default:
        NSLog(@"Mail not sent.");
        break;
}

// Remove the mail view
[self dismissModalViewControllerAnimated:YES];

}


回答1:


The correct answer is to remove the

[self dismissModalViewControllerAnimated:YES] 

just after the presentModalViewController method.

You are crashing because, you dismiss the modal view controller soon after it is presented and try to dismiss it again (which is deallocated already) in the callback delegate.

You can read about how to send an in app email here on my post.

http://blog.mugunthkumar.com/coding/iphone-tutorial-in-app-email/



来源:https://stackoverflow.com/questions/11061559/ios-app-crashes-when-inapp-mail-command-gets-called

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!