邮件界面取消按钮不起作用 ios - MFMailComposeViewController 类

Posted

技术标签:

【中文标题】邮件界面取消按钮不起作用 ios - MFMailComposeViewController 类【英文标题】:mail interface cancel button not working ios - MFMailComposeViewController class 【发布时间】:2011-12-03 10:21:18 【问题描述】:

我有一个像这样添加到当前窗口顶部的 webview 对象 (aWebView) -

UIWindow *webWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 20, 320,460)];
[webWindow addSubview:aWebView];
[webWindow makeKeyAndVisible];

我有一个 ViewController (viewcontrollerobj),它是 aWebView 的子视图 -

[webView addSubview:viewcontrollerobj.view];

然后我在 ViewController 中调用 sendInAppMail 方法-

[sviewcontroller sendInAppMail];

SendInAppMail 看起来像这样 -

    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];
    

didFinishWithResult 看起来像这样 -

- (void)mailComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

    switch (result) 
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSent:
            break;
        default:
            break;
    

    [self dismissModalViewControllerAnimated:YES];

邮件视图控制器显示正常。问题是,当我点击取消时,它会显示删除/保存草稿选项,并且在单击删除/保存后,邮件视图控制器不会消失!

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

我看过这个 - https://***.com/a/6015957/516938 但似乎给出的解决方案是针对特定情况的。

【问题讨论】:

【参考方案1】:

不确定这是不是问题,但这是我首先要看的。

根据您收到的错误消息,这听起来像是其中一个视图(您定义的 aWebView 或来自 viewcontrollerobj 的视图)没有为 MFMailComposeViewController 提供足够的空间,这意味着它的尺寸小于MFMailComposeViewController 的要求。它实际上并没有剪裁内容,所以你会看到它,但它会阻止触摸,因此它们不会到达MFMailComposeViewController

我希望这足够清楚 - 我很难正确地描述我的想法。

【讨论】:

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

以上是关于邮件界面取消按钮不起作用 ios - MFMailComposeViewController 类的主要内容,如果未能解决你的问题,请参考以下文章

尝试从应用内发送电子邮件但不起作用 - Swift (iOS)

MFMessageComposeViewController 取消按钮不起作用

在 iOS 8 中更改 UISearchBar 取消按钮文本

取消发布应用按钮不起作用

除非您离开应用程序并返回,否则按钮 onclick 事件在 iOS 中不起作用,然后它就起作用了

tableview.reloaddata() 在使用 coredata 时搜索栏取消按钮后不起作用