邮件接口取消按钮不工作ios-MFMailComposeViewController类

邮件接口取消按钮不工作ios-MFMailComposeViewController类,ios,uiviewcontroller,uiwebview,Ios,Uiviewcontroller,Uiwebview,我有一个webview对象(aWebView),它被添加到当前窗口的顶部,如下所示- UIWindow *webWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 20, 320,460)]; [webWindow addSubview:aWebView]; [webWindow makeKeyAndVisible]; MFMailComposeViewController *mailController = [[[MFMail

我有一个webview对象(aWebView),它被添加到当前窗口的顶部,如下所示-

UIWindow *webWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 20, 320,460)];
[webWindow addSubview:aWebView];
[webWindow makeKeyAndVisible];
    MFMailComposeViewController *mailController = [[[MFMailComposeViewController alloc] init] autorelease];
    if([MFMailComposeViewController canSendMail])
    {
        [mailController setMessageBody:@"hello" isHTML:NO];
        [mailController setSubject:@"subject"];
        mailController.mailComposeDelegate = self;  
        [self presentModalViewController:mailController animated:YES];
        [mailController release];
    }
- (void)mailComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSent:
            break;
        default:
            break;
    }

    [self dismissModalViewControllerAnimated:YES];
}
我有一个viewcontrollerobj,它是aWebView的子视图-

[webView addSubview:viewcontrollerobj.view];
然后我在ViewController中调用sendInAppMail方法-

[sviewcontroller sendInAppMail];
SendInAppMail看起来像这样-

UIWindow *webWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 20, 320,460)];
[webWindow addSubview:aWebView];
[webWindow makeKeyAndVisible];
    MFMailComposeViewController *mailController = [[[MFMailComposeViewController alloc] init] autorelease];
    if([MFMailComposeViewController canSendMail])
    {
        [mailController setMessageBody:@"hello" isHTML:NO];
        [mailController setSubject:@"subject"];
        mailController.mailComposeDelegate = self;  
        [self presentModalViewController:mailController animated:YES];
        [mailController release];
    }
- (void)mailComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSent:
            break;
        default:
            break;
    }

    [self dismissModalViewControllerAnimated:YES];
}
didFinishWithResult看起来像这样-

UIWindow *webWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 20, 320,460)];
[webWindow addSubview:aWebView];
[webWindow makeKeyAndVisible];
    MFMailComposeViewController *mailController = [[[MFMailComposeViewController alloc] init] autorelease];
    if([MFMailComposeViewController canSendMail])
    {
        [mailController setMessageBody:@"hello" isHTML:NO];
        [mailController setSubject:@"subject"];
        mailController.mailComposeDelegate = self;  
        [self presentModalViewController:mailController animated:YES];
        [mailController release];
    }
- (void)mailComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSent:
            break;
        default:
            break;
    }

    [self dismissModalViewControllerAnimated:YES];
}
邮件视图控制器显示良好。问题是,当我点击cancel时,它会显示delete/save draf t选项,单击delete/save后,mail viewcontroller不会消失

当我查看控制台时,它会显示以下日志消息- “演示由其superview剪辑的操作表。某些控件可能不会响应触摸。在iPhone上,请尝试-[UIActionSheet showFromTabBar:]或-[UIActionSheet showFromToolbar:]而不是-[UIActionSheet showInView:] 我没有在任何地方使用UIActionSheet,过去也没有使用过,所以我无法理解它在说什么

我看了这个——
但给出的解决方案似乎非常针对某一情况。

不确定这是否是问题所在,但这是我要考虑的第一件事

根据您收到的错误消息,听起来其中一个视图(您定义的
aWebView
viewcontrollerobj
中的视图)没有为
MFMailComposeViewController
留出足够的空间,这意味着它的尺寸小于
MFMailComposeViewController
所需的尺寸。它实际上并没有剪切内容,所以您可以看到它,但它阻止了触摸,这样它们就不会访问
MFMailComposeViewController


我希望这足够清楚——我在这里很难正确描述我的想法。

我不认为这会阻碍接触。因为当我第一次点击“取消”时,它会显示“删除/保存草稿”选项。我在didFinishWithResult中使用NSLOg语句再次运行了它,它似乎根本没有被调用。理想情况下,当我点击删除草稿时,它应该被调用,整个邮件对话框应该消失!天啊!愚蠢的错误是它的“mailComposeController”而不是“mailComposeViewController”哈哈!哎呀。很高兴你发现了这个问题。