【问题标题】:MFMailComposeViewController interferes with app's navigation controllerMFMailComposeViewController 干扰应用的导航控制器
【发布时间】:2015-01-23 18:03:41
【问题描述】:

我有一个通用应用程序,它使用 MFMailComposeViewController 发送应用程序反馈。该应用程序包含其他几个组件,用户可以通过单击列出每个组件的表格视图单元格来启动它们。使用导航控制器的pushViewController: 方法启动组件。

然而,使用 MFMailComposeViewController 需要从视图控制器本身调用presentViewController:,而不是从导航控制器。一旦调用了 MFMailComposeViewController,UI 就会出现布局问题,直到重新启动。

我怀疑这是因为 MFMailComposeViewController 继承自 UINavigationController 并将另一个导航控制器推入堆栈会导致冲突。这是电子邮件表单的当前初始化:

MFMailComposeViewController *emailForm = [[MFMailComposeViewController alloc] init];
// configure the form
[self.parent presentViewController:emailMessage animated:YES completion:nil];

我想这里真正的问题是如何在已经包含导航控制器的应用程序中使用 MFMailComposeViewController。

谁能提供解决方案的建议?谢谢!

【问题讨论】:

  • 您实际看到了什么问题?我通常会发现,如果您展示的是 MFMailComposeViewController,那么当视图控制器完成时,需要重置导航或状态栏的任何自定义。您可以在view[Will/Did]Appear 中重置它们,或者在MFMailComposeViewController 的委托中重置它们。
  • 我有一个类似的问题,我无法控制我的 MFMailComposeViewController 上的方向设置

标签: ios xcode uiviewcontroller uinavigationcontroller mfmailcomposeviewcontroller


【解决方案1】:

当您呈现 mailComposeViewController 时,将其分派到主队列中,不会发生 UI 约束问题。我正在使用 swift,所以我必须这样做:

dispatch_async(dispatch_get_main_queue()), { self.presentViewController(mailComposeViewController, animated:false, completion:nil) })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-31
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多