MFMailComposeViewController的取消按钮(可能是操作表)冻结视图

akd*_*uza 14 iphone cancel-button ios mfmailcomposer mfmailcomposeviewcontroller

我见过这样几个问题,如但缺乏一个公认的答案,以及根据需要我还是继续面对的课题有实现的事情如下:我显示邮件的作曲家,但在点击取消,作曲家视图冻结.我认为这是由于保存/删除草稿操作表显示在可见框架之外.是的我已经将mailComposeDelegate设置为呈现视图控制器,并且已经阅读了几个类似的问题,其中用户没有处理(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error委托以取消取消作曲家.我也处理了这个问题,但我似乎无法弄清楚为什么动作表不会出现在我的通用应用程序的iPhone版本的屏幕的可见区域中.以模块方式将邮件编辑器呈现为NSLogged的视图控制器的视图框架是(0,0,320,480).我的应用程序是通用的,邮件编辑器在iPad上完美运行.下面是在iPhone模拟器5.1上运行的作曲家视图的截图: -

在此输入图像描述
这是显示作曲家的代码:

-(IBAction)mailButtonPressed:(id)sender {

    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
    controller.mailComposeDelegate = self;
    [controller setSubject:@"Subject"];
    [controller setMessageBody:@"Test" isHTML:YES];
    [controller setToRecipients:nil];

    if(controller) {
        [self presentModalViewController:controller animated:YES];
        [controller release];
    }
}

- (void)mailComposeController:(MFMailComposeViewController*)controller 
          didFinishWithResult:(MFMailComposeResult)result
                        error:(NSError*)error 
{ 
    [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

Mac*_*00b 5

为什么不尝试删除代码,并在关注在线教程时重试,例如:

http://iphonedevsdk.com/forum/tutorial-discussion/43633-quick-tutorial-on-how-to-add-mfmailcomposeviewcontroller.html

在这些情况下,您总是忘记了工作所需的一行简单代码,因此遵循教程可以确保所有必需的代码都存在.

请尝试使用此代码:

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            NSLog(@"Mail cancelled");
            break;
        case MFMailComposeResultSaved:
            NSLog(@"Mail saved");
            break;
        case MFMailComposeResultSent:
            NSLog(@"Mail sent");
            break;
        case MFMailComposeResultFailed:
            NSLog(@"Mail sent failure: %@", [error localizedDescription]);
            break;
        default:
            break;
    }

    // Close the Mail Interface
    [self dismissViewControllerAnimated:YES completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)