MFMailComposeViewController会干扰应用程序的导航控制器

时间:2014-11-25 16:21:45

标签: ios xcode uiviewcontroller uinavigationcontroller mfmailcomposeviewcontroller

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

但是,使用MFMailComposeViewController时,必须从视图控制器本身调用presentViewController:,而不是从导航控制器调用MFMailComposeViewController *emailForm = [[MFMailComposeViewController alloc] init]; // configure the form [self.parent presentViewController:emailMessage animated:YES completion:nil]; 。一旦调用了MFMailComposeViewController,UI就会受到布局问题的影响,直到重新启动。

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

{{1}}

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

有人可以提出解决方案的建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

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

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