0

카메라 또는 사진 라이브러리에서 찍은 사진이 포함 된 이메일을 작성하고 싶습니다. 그러나 Mail 작곡가 선택기를 열 수 없습니다.사진 라이브러리에서 사진을 이메일로 전송

-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
    UIImage* image_type=[info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    dataImage = UIImagePNGRepresentation(image_type); 

    if([MFMailComposeViewController canSendMail]) 
    { 
     MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init]; 
     mailCont.delegate=self; 
     mailCont.mailComposeDelegate = self;  // Required to invoke mailComposeController when send 
     [mailCont setSubject:@""]; 
     [mailCont setToRecipients:[NSArray arrayWithObject:@""]]; 
     [mailCont addAttachmentData:dataImage mimeType:@"image/png" fileName:@"sender_image.png"]; 
     [mailCont setMessageBody:@"" isHTML:NO]; 

     [self presentModalViewController:mailCont animated:YES]; 
    } 
} 

이제 메일 피커가 개방되지 않습니다

여기 내 코드입니다. 경고 :

Warning: Attempt to present <MFMailComposeViewController: 0xa26b070> on <UINavigationController: 0xa22e6d0> while a presentation is in progress! 

어떻게 처리 할 수 ​​있습니까?

+0

메일 구성 코드를 별도의 함수로 옮기고 performSelector : withObject : afterDelay : – Adithya

+1

@ Adi를 사용하여 해당 함수를 약간 지연하여 호출 할 수 있습니다. 일부 이후에는 자체 해제 된 보증이 없으므로 최적의 솔루션이 아닙니다. 임의의 시간 ε. 그것은 해고가 끝난 후에해야합니다. – Groot

+0

고맙습니다 @PraveenS 저에게 새로운 문장을 말하십시오 .. 그것은 훌륭하게 작동합니다 ... – shivam

답변

2

문제는 UIImagePicker를 먼저 닫은 다음 다른보기를 모달보기로 즉시 표시하려고하는 것입니다. 해고가 끝난 후에해야합니다. 대신 다음을 시도해보십시오.

-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info 
{ 
    [self dismissViewControllerAnimated:YES 
          completion:^{ 
           UIImage* image_type=[info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
           dataImage = UIImagePNGRepresentation(image_type); 

           if([MFMailComposeViewController canSendMail]) 
           { 
            MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init]; 
            mailCont.delegate=self; 
            mailCont.mailComposeDelegate = self;  // Required to invoke mailComposeController when send 
            [mailCont setSubject:@""]; 
            [mailCont setToRecipients:[NSArray arrayWithObject:@""]]; 
            [mailCont addAttachmentData:dataImage mimeType:@"image/png" fileName:@"sender_image.png"]; 
            [mailCont setMessageBody:@"" isHTML:NO]; 

            [self presentModalViewController:mailCont animated:YES]; 
           } 
          }]; 
} 

희망이 있습니다.

+0

고마워요 @filip .. 그 작품은 .. 해피 코딩 .. :) – shivam

+0

@ shivam Sweet! 아마 +1과 받아 들여진 응답은 순서에있을 것입니다! ;) – Groot