<分区>
<分区>
我想用从相机或照片库拍摄的照片撰写一封电子邮件。但我无法打开 Mail composer picker。
这是我的代码:
-(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!
我该如何处理。
最佳答案
您的问题是您首先关闭 UIImagePicker,然后立即尝试将另一个 View 显示为模态视图。这必须在解雇完成后完成。试试这个:
-(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];
}
}];
}
希望对您有所帮助!
关于ios - 通过电子邮件发送照片库中的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935732/