ios - 通过电子邮件发送照片库中的图片

标签 ios objective-c uiimagepickercontroller mfmailcomposeviewcontroller

<分区>

我想用从相机或照片库拍摄的照片撰写一封电子邮件。但我无法打开 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/

上一篇:iphone - PhoneGap iOS 添加 UIViewController

下一篇:ios - 讨论,iOS 编程的最佳方式?

相关文章:

iphone - 设置状态栏隐藏后不旋转

ios - UIButton 未在 iOS 中显示

iphone - 如何自动调整 UIScrollView 的大小以适合其内容

objective-c - 互动书 - 从哪里开始

iphone - 在 iOS 中使用控件播放音频

ios - IQKeyBoardManager 在 IOS 11 中无法正常工作

iphone - 核心数据 : Transient values dirty object

ios - 替换拍摄并重新拍摄按钮UIImagePickerController

iOS 7 状态栏中的 UIImagePickerController

ios - 图像选择器显示多个图像,如拼贴画,没有内存问题