Сбой на MFMailComposeViewController для iPad - PullRequest
1 голос
/ 05 ноября 2011
- (void) mailshareClick:(UIButton *)sender
{
    NSString  *_message = @"wait for set up Mail";
    [self waitForWhile:_message];
    if ([MFMailComposeViewController canSendMail]){
        [NSThread detachNewThreadSelector:@selector(mailFunction) toTarget:self withObject:nil];
    }
    else {
        _message = @"Please set Mail account";
        [self remove:_message];
    }
}
- (void) mailFunction
{
    NSData *data = nil;
    if ([self.files.imageArr count]>0) 
    {
        XXImage *single = [self.files.imageArr objectAtIndex:0];
        UIImage *image = [[SDImageCache sharedImageCache] imageFromKey:[[single.imagearray objectAtIndex:0] columnImage]];
        data = [UIImageJPEGRepresentation(image, 1.0f) retain];
    }
    [self performSelectorOnMainThread:@selector(mailFinished:) withObject:data waitUntilDone:YES];    
    [data release];
}
- (void) mailFinished:(NSData *)_data
{
    if ([MFMailComposeViewController canSendMail]){
        NSData *data = [_data retain];
        MFMailComposeViewController   *message = [[MFMailComposeViewController alloc] init];
        //Title
        [message setSubject:self.files.title];
        //Body
        [message setMessageBody:@"111" isHTML:YES];

        [message setToRecipients:[NSArray arrayWithObject:@"mail"]];
        //Content
        if (data != nil) {
            NSString *picStr = [[NSString alloc] initWithFormat:@"%@%@",OutsideWebsite_Normal,self.files.middlePicPath];
            [message addAttachmentData: data mimeType: @"" fileName:picStr];
            [picStr release];
            [data release];
        }
        message.mailComposeDelegate = self;
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        {
            message.modalPresentationStyle = UIModalPresentationFormSheet;
        }
        [self presentModalViewController:message animated:YES];

        [self remove:@"Set up Ok"];
        [message release];
    }
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    switch (result) {
        case MFMailComposeResultSent:
        {
            NSLog(@"MFMailComposeResultSent");
            break;
        }
        case MFMailComposeResultSaved:
        {
            NSLog(@"MFMailComposeResultSaved");
            break;
        }
        case MFMailComposeResultFailed:
        {
            NSLog(@"MFMailComposeResultFailed");
            break;
        }
        case MFMailComposeResultCancelled:
        {
            NSLog(@"MFMailComposeResultCancelled");
            break;
        }
        default:
            break;
    }
    [self performSelector:@selector(delayDismissModalView) withObject:nil afterDelay:1];
}
-(void)delayDismissModalView
{
    [self dismissModalViewControllerAnimated:YES];
}

После вызова метода электронной почты несколько раз будет

  • [MFSearchResultsViewController hash]: сообщение отправлено на освобожденный экземпляр или

  • [MFMailComposeViewController hash]: сообщение отправлено на освобожденный экземпляр

сбой.

Как вы думаете, что такое функция MFSearchResultsViewController.

Может ли это решить проблему, пожалуйста, дайте мне руку.

1 Ответ

1 голос
/ 08 декабря 2011

Вы должны установить делегат для почтового контроллера. Если вы устанавливаете делегата на «себя», убедитесь, что у «себя» есть <MFMailComposeViewControllerDelegate>. Если все это не поможет, убедитесь, что вы не звонили presentModalViewController дважды.

...