Сбой в MFMailComposeViewController для iPad

- (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]: сообщение отправлено в освобожденный экземпляр Или

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

крушение.

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

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


person XiaoHao    schedule 05.11.2011    source источник


Ответы (1)


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

person zhoulei    schedule 08.12.2011