Подтвердить что ты не робот

Устранение отклонения родительского представления за статусной строкой

У меня здесь очень странная проблема. Я использую настоящий modal view controller для отображения моего MFMailComposer ViewController поверх ViewController, который помещается в панель навигации.

[self presentModalViewController:emailviewController animated:YES];

чтобы скрыть, я использую...

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

    [self dismissModalViewControllerAnimated:YES];
}

Все работает нормально, но когда я отклоняю свой MailComposer, исходный контроллер представления скрывается за панель состояния.

Я попытался изменить смещение вида на 10 с помощью метода setFrame, но он не работал. (это устало до и после того, как контроллер модального представления представлен и отклонен)

Я попытался скрывать строку состояния временно, но не работал.

Я пробовал self.navigationcontroller presentmodalviewcontrolle, но это тоже не сработало...

Любые идеи или предложения будут высоко оценены

After dismissmodalviewcontroller called

отредактировано: Большинство людей дают мне предложение изменить смещение вручную. Ну, это не работает. Потому что, если я это сделаю в своем представлении viewDillLoad/viewWillapper исходного метода viewcontroller, то он сдвигает мое представление до текущего модального контроллера представления, тогда как после загрузки модального контроллера просмотра он становится нормальным.

  • (void) viewDidAppear: (BOOL) анимированный { CGRect frame = self.navigationController.view.frame; frame.origin.y = 20; self.navigationController.view.frame = frame; }

Changing offset results in this

4b9b3361

Ответ 1

Попробуйте поместить это в ViewDidAppear:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

В худшем случае, если это всегда происходит только после отклонения диспетчера модальных представлений, объявите логическое значение для afterFirstLaunch в .h и поместите это в viewDidAppear:

if(afterFirstLaunch){
      CGRect frame = self.navigationController.view.frame;
      frame.origin.y = 20;
      self.navigationController.view.frame = frame;
}
else {
      afterFirstLaunch = true;
 }