Проблемы с модальным представлением, запущенным через контроллер разделенного представления - PullRequest
4 голосов
/ 20 января 2011

Я создал приложение с разделенным видом, которое начинается с заставки модального представления.Проблема в том, что модальный вид всегда запускается в портретном режиме, даже если ipad находится в альбомной ориентации.Если я поверну ipad пару раз, он вращается соответствующим образом.Я установил UIInterfaceOrientation в моем Info.plist, но он не имеет никакого значения.

в didFinishLaunchingWithOptions , я использую следующий код

...
[self.window addSubview:splitViewController.view];
SplashViewController *modalView = [[SplashViewController alloc] intiWithNibName:nil bundle:nil];
modalView.modalPresentationStyle = UIModalPresentationFullScreen;
[splitViewController presentModalViewController:modalView animated:YES];
...

Anyпредложения о том, как я могу обеспечить запуск модального вида в альбомной ориентации?

Ответы [ 3 ]

1 голос
/ 21 февраля 2011

У меня была похожая проблема при использовании MGSplitViewController Мэтта Геммелла .В моем случае, пытаясь открыть контроллер модального представления в режиме FormSheet из контроллера подробного представления (это «правая» панель в стандарте UISplitViewController), мое модальное представление заставляло поворот интерфейса в портретное.Я нашел решение, переопределив контроллер модального представления -> shouldAutorotateToInterfaceOrientation: и позволив ему вернуть NO:

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

Таким образом, когда будет представлен модальный режим, по какой-то причине ОС пытается заставитьэто к портрету.Отвечая НЕТ, изображение больше не поворачивается и все работает нормально.

1 голос
/ 25 сентября 2011

Я думаю, что это лучший способ сделать это:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation==UIInterfaceOrientationLandscapeRight) {
        return YES;
    }
    return NO;
}
0 голосов
/ 21 января 2011

В файле, из которого вы запускаете модальное представление, вы захотите изменить / переопределить следующую функцию. Вы можете просто скопировать и вставить следующий код, и вы сможете запустить модальное представление в книжном альбомном режиме:

- (BOOL)shouldAutoRotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

Удачи.

РЕДАКТИРОВАТЬ: Я сказал портретный режим вместо того, что я имел в виду: ландшафтный режим.

...