0

我试图在我的应用程序中调出一个电子邮件窗口,但是假设有取消和发送的顶部工具栏正在被导航控制器遮挡。Modal View的工具栏被遮挡。 MFMailComposeViewController

我相信原因是,我打电话

if ([MFMailComposeViewController canSendMail]) { 
      MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; 
      controller.mailComposeDelegate = self; 
      [controller setToRecipients:[NSArray arrayWithObject:@"[email protected]"]]; 
      [controller setSubject:@"Mobile HelpDesk App"]; 
      [controller setMessageBody:@"" isHTML:NO]; 
      if (controller){ 
       [self presentViewController:controller animated:YES completion:^{}]; 
      } 

     } 

从孩子的ViewController控制滚动型(用于寻呼)内的视图。

如何让工具栏位于导航栏的顶部?现在,它只显示新的电子邮件窗口,但我无法取消或发送电子邮件。

我试过使用[self.parentViewController presentViewController:controller animated:YES completion:^{}];,但那没有做任何事情。

谢谢!

回答

1

不能使用presentViewController:...从视图控制器,其观点是不是在视图层次结构的顶部(所以最有可能不会占据整个屏幕)。正如你所看到的,这导致了一个呈现的视图,这可能是部分可见的,并且可能不响应某些区域的触摸。

尝试self.parentViewController是正确的解决方案(尽管您显示的代码是无效的)。您需要确保您在层次结构中导航足够多,才能到达“根”视图控制器并从那里呈现。

+0

好吧..哇我没有意识到它已在导航控制器的根来呈现。无论如何要从这个视图控制器回调到根目录吗?它可能至少有3-4个VC。 – Alan 2013-05-10 21:13:27

+0

的UIViewController的便利方法可能会无法处理您的层次结构,如果它是复杂,所以你需要在把东西自己处理导航。 – Wain 2013-05-10 21:17:05

+0

所以我创建了一个NSNotification以便它会通知我想要显示的电子邮件的形式根控制器。它现在有效!希望这是最有效的解决方案。谢谢你的帮助! – Alan 2013-05-10 21:26:53

0

这听起来像它可能是为改变简单:

[self presentViewController:controller animated:YES completion:^{}]; 

[self.navigationController presentViewController:controller animated:YES completion:^{}]; 

希望这有助于你。

+0

...没有工作。这可能是因为视图控制器被埋在根的下三级。 – Alan 2013-05-10 21:14:15