iPad UISplitViewController вращается без необходимости, когда модальное диалоговое окно закрыто - PullRequest
0 голосов
/ 21 октября 2010

У меня довольно простое приложение с разделенным видом, адаптированное из кода iPhone.Основная функциональность в общих классах с классами iPhone и iPad, наследующими и дополняющими код.Все классы, используемые в приложении iPad, имеют следующее:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Overriden to allow any orientation.
    return YES;
}

Контроллер основного представления состоит из UIToolbar и UITableView.Правильно реагирует на повороты на каждом этапе два бара.Если я представляю модальное диалоговое окно из этого представления:


 navigationController = [[UINavigationController alloc] initWithRootViewController:tvc];
 navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
 [self presentModalViewController:navigationController animated:NO];

Все работает, как ожидалось, включая вращение устройства, пока я не закрываю диалог каким-либо образом с:

 [self dismissModalViewControllerAnimated:YES];

В этот момент мойОсновной вид поворачивается на 90 градусов.Я посмотрел на настройки в файлах пера, и все, кажется, в порядке.Любой совет?Модальное диалоговое окно, представленное UITableView с левой стороны, не представляет этой проблемы.

Бонусный вопрос:

Я обнаружил, что модальное диалоговое окно, представленное левым представлением, имеет сбой,Но только один.Если он представлен поповерным представлением в портретном режиме и устройство поворачивается, вы получаете довольно впечатляющий графический глюк, поскольку он вращается вне обзора навсегда!

1 Ответ

0 голосов
/ 27 октября 2010

Как отмечалось в комментарии выше, мне удалось объединить два контроллера представления в один, включая код для обработки панели инструментов + контроллер splitview в версию для iPad.Первоначально существовал общий класс, унаследованный от UITableViewController, версии кода для iPad и iPhone, унаследованные от этого общего класса.Проблема была на iPad. Я хотел панель инструментов вверху и тоже должен был поддерживать контроллер splitview.Это было проблематично, учитывая, что класс был UITableViewController, поэтому я создал родительский класс, содержащий панель инструментов и контроллер табличного представления плюс код splitview.В рефакторинге я изменил общий класс на UIViewController и внес изменения, чтобы поддерживать UITableView в коде, как обычно, как было указано в нескольких книгах по разработке для iPhone.В версии класса для iPhone я вручную создаю UITableView с необходимыми методами.В версии для iPad это файл xib.Это схематично упрощает вещи, так как теперь в главном представлении нет контроллера внутри контроллера.Это также решает проблему.Поворот пользовательского интерфейса на 90 градусов после закрытия модального диалога больше не происходит.

...