Приложение «Мой iPhone» поддерживает перевернутую ориентацию интерфейса: когда пользователь переворачивает телефон вверх дном (так, чтобы кнопка «Домой» была сверху), весь пользовательский интерфейс переворачивается вертикально.
Однако возникает проблема при попытке представить некоторый контроллер представления B из моего контроллера представления A (в этом примере я представляю стандартный контроллер представления почтового компоновщика):
- (IBAction)buttonTapped:(id)sender {
MFMailComposeViewController *mailVC = [MFMailComposeViewController new];
mailVC.mailComposeDelegate = self;
[self presentViewController:mailVC animated:YES completion:nil];
}
Когда этот метод запускается, первое, что происходит, это то, что (синий) контроллер представления A немедленно переворачивается по вертикали без анимации по какой-либо причине (как видно на первом снимке экрана) → Почему?
Затем представленный контроллер представления B перемещается в представление (как и должно) снизу.
При закрытии контроллера вида B он мгновенно переворачивается и перемещается из вида вверх (а не в том направлении, откуда он пришел, как показано на втором снимке экрана).
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
[self dismissModalViewControllerAnimated:YES];
}
Является ли это ошибкой iOS или как избежать этого странного поведения?
(Мне нужна только та же стандартная анимация для представления контроллеров вида, что и в обычном портретном режиме, но без этих флипов.)
MFMailComposeViewController
вместо создания для него категории, и по какой-то причине это не сработало. Ваше решение отлично работает. Большое спасибо! 24.04.2014