13

我在这里有一个非常奇怪的问题。我正在使用当前的模态视图控制器将我的 MFMailComposer ViewController 显示在放置在导航栏中的 ViewController 的顶部。

[self presentModalViewController:emailviewController animated:YES];

为了隐藏,我使用...

-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{

    [self dismissModalViewControllerAnimated:YES];
}

一切正常,但是当我关闭 MailComposer 时,原始视图控制器隐藏在状态栏后面。

我尝试使用 setFrame 方法将视图偏移量修改为 10,但它不起作用。(这在模态视图控制器呈现和关闭之前和之后很累)

我曾尝试暂时隐藏状态栏,但没有奏效。

我已经尝试过 self.navigationcontroller presentmodalviewcontrolle 但这也没有用......

任何想法或建议将不胜感激

调用dismissmodalviewcontroller后

编辑:大多数人给我建议手动修改偏移量。好吧,那是行不通的。因为如果我在原始 viewcontroller 方法的 viewDidLoad/viewWillapper 中这样做,那么它会在当前模态视图控制器之前移动我的视图,而在我加载模态视图控制器之后它会变得正常。

  • (void) viewDidAppear: (BOOL) 动画 { CGRect frame = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = 框架;}

改变偏移量会导致这个

4

1 回答 1

3

尝试将其放入 ViewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

最坏的情况,如果它总是在模态视图控制器被关闭后发生,请在 .h 中为 afterFirstLaunch 声明一个布尔值并将其放入 viewDidAppear:

if(afterFirstLaunch){
      CGRect frame = self.navigationController.view.frame;
      frame.origin.y = 20;
      self.navigationController.view.frame = frame;
}
else {
      afterFirstLaunch = true;
 }
于 2012-07-21T06:31:51.253 回答