Устранение отклонения родительского представления за статусной строкой
У меня здесь очень странная проблема. Я использую настоящий 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]()
Ответы
Ответ 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;
}