我正在尝试在我的应用程序中显示一个电子邮件窗口,但是导航控制器会遮挡假设有取消和发送的顶部工具栏。
我相信原因是我正在打电话
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setToRecipients:[NSArray arrayWithObject:@"internalapps@microstrategy.com"]];
[controller setSubject:@"Mobile HelpDesk App"];
[controller setMessageBody:@"" isHTML:NO];
if (controller){
[self presentViewController:controller animated:YES completion:^{}];
}
}
从控制滚动视图内部视图的子ViewController(For Paging)。
如何让工具栏位于导航栏的顶部?现在,它只显示新的电子邮件窗口,但我无法取消或发送电子邮件。
我尝试使用[self.parentViewController presentViewController:controller animated:YES completion:^{}];
,但这没有做任何事情。
谢谢!
答案 0 :(得分:1)
您不能在视图不在视图层次结构顶部的视图控制器中使用presentViewController:...
(因此很可能不占用整个屏幕)。正如您所见,这会导致呈现的视图可能部分可见,并且可能无法响应某些区域的触摸。
尝试self.parentViewController
是正确的解决方案(尽管您显示的代码无效)。您需要确保在层次结构中导航得足够远以到达“根”视图控制器并从那里出现。
答案 1 :(得分:0)
这听起来像改变一样简单:
[self presentViewController:controller animated:YES completion:^{}];
到
[self.navigationController presentViewController:controller animated:YES completion:^{}];
希望这会对你有所帮助。