• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 未调用 MFMailComposeViewController didFinishWithResult

[复制链接]
菜鸟教程小白 发表于 2022-12-11 16:42:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在编写一个具有通用表单的应用程序,该表单会根据用户在表单中输入的内容进行调整和更改,然后他们会通过并回答表单中较低的问题,因此我在代码中进行了答案检查以使其工作,当用户单击提交时,邮件撰写 View Controller 加载正常,然后他们单击发送并发送电子邮件,但没有调用 didFinishWithResult 函数,这意味着 Composer 不会解雇。请看下面我的代码:

@IBAction func Submit(sender: AnyObject) {

    if SelectedTalkLabel.text! == "Safe Breaking Ground - Toolbox Talk" && ASwitch.on && BSwitch.on && DSwitch.on && !(CSwitch.on)    ||    SelectedTalkLabel.text! == "Loading & Unloading Vehicles - Toolbox Talk" && ASwitch.on && BSwitch.on && CSwitch.on && !(DSwitch.on)    ||    SelectedTalkLabel.text! == "Orteco - Toolbox Talk" && ASwitch.on && CSwitch.on && !(BSwitch.on) && !(DSwitch.on) {


        let toRecipents = ["[email protected]"]
        let emailTitle = "New ToolBox Talk Submission received!"
        let messageBody = String(format: "")

        let mc : MFMailComposeViewController = MFMailComposeViewController()

        mc.mailComposeDelegate = self


        mc.setToRecipients(toRecipents)
        mc.setSubject(emailTitle)
        mc.setMessageBody(messageBody, isHTML: false)

        self.presentViewController(mc, animated: true, completion: nil)

}

func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {

        switch result.rawValue {

        case MFMailComposeResultCancelled.rawValue:
            print("cancelled")
            self.dismissViewControllerAnimated(true, completion: nil)

        case MFMailComposeResultFailed.rawValue:
            print("failed")
            AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
            self.dismissViewControllerAnimated(true, completion: nil)

        case MFMailComposeResultSaved.rawValue:
            print("saved")
            self.dismissViewControllerAnimated(true, completion: nil)

        case MFMailComposeResultSent.rawValue:
            print("sent")
            self.dismissViewControllerAnimated(true, completion: nil)


        default:
            break

        }

        if SelectedTalkLabel.text! == "Safe Breaking Ground - Toolbox Talk" && !(ASwitch.on) || !(BSwitch.on) || !(DSwitch.on)    ||    SelectedTalkLabel.text! == "Loading & Unloading Vehicles - Toolbox Talk" && !(ASwitch.on) || !(BSwitch.on) || !(CSwitch.on)    ||    SelectedTalkLabel.text! == "Orteco - Toolbox Talk" && !(ASwitch.on) || !(CSwitch.on) {

            let WrongAlert = UIAlertController(title: "Wrong Answer!", message: "You have selected the wrong answers, please go back and try again", preferredStyle: .Alert)

            let WrongDismiss = UIAlertAction(title: "Okay", style: .Cancel, handler: {
                (alert: UIAlertAction!) -> Void in
            })

            WrongAlert.addAction(WrongDismiss)

            self.presentViewController(WrongAlert, animated: true, completion: nil)
    }
}

这类似于我在应用程序中使用的其他形式的代码,根本不使用戏剧。如果有人可以尝试帮助我解决这个问题,将不胜感激。干杯。



Best Answer-推荐答案


我遇到了同样的问题,并且正在寻找过去 2 天的修复程序,然后我自己找到了一个修复程序,你不会相信它是多么小。

在我的情况下,我正在展示 MFMailComposeViewController 的 View Controller (根据这个问题说“DetailsTableViewController”,根据这个问题,您的“提交”按钮存在)已经从其他一些 View Controller 呈现(比如“BaseViewController”)。

问题在于“DetailsTableViewController”的“modalPresentationStyle”,同时从 BaseViewController 呈现它。

当我将它从 'UIModalPresentationFormSheet' 更改为 'UIModalPresentationPageSheet' 时(就此而言,除了 'UIModalPresentationFormSheet' 之外的任何东西)问题得到解决,邮件 Controller 委托(delegate)方法开始照常触发。

注意:我已经在 'DetailsTableViewController' 中调用了以下方法(对于本示例),因此我使用的是哪个 'modalPresentationStyle' 对我来说并不重要。

- (void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    self.view.superview.bounds = CGRectMake(0, 0, 1024, 768);
    self.view.superview.backgroundColor = [UIColor clearColor];
}

希望这也能解决您的问题。

关于ios - 未调用 MFMailComposeViewController didFinishWithResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37721463/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap