iPad Modal View вращает parentViewController View - PullRequest
2 голосов
/ 20 сентября 2010

Когда приложение находится в альбомном режиме (который я планирую принудительно), отображение модального представления заставляет родительское представление поворачиваться в портретный режим. Если я установлю возвращаемое значение shouldAutoRotateToInterfaceOrientation в значение NO, родительский элемент не будет вращаться, однако модальное поле затем перемещается со стороны и отображается вбок. Ниже приведен код, который раскрывает модальное.

- (IBAction)loadExistingGame:(id)sender {

SavedGamesTableViewController *savedGames = [[SavedGamesTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
savedGames.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:savedGames animated:YES];

[savedGames release];

}

В соответствии с запросом здесь приведено содержимое метода shouldAutoRotate SavedGamesTableViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Override to allow orientations other than the default portrait orientation.
return YES;

}

Ответы [ 5 ]

2 голосов
/ 23 сентября 2010

Хорошо, я понял, что нужно сделать, чтобы это исправить. Файл plist, содержащий список возможных ориентаций, должен быть ограничен одним пейзажем. Родитель модального табличного представления должен иметь метод shouldAutoRotateToInterfaceOrientation, возвращающий YES, только если ориентация соответствует единственной ориентации в файле plist.

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

}

модальный viewcontroller должен вернуть NO для того же метода.

0 голосов
/ 02 апреля 2013
UIViewController *vc = /* create view controller */;
UINavigationController *nc = nil;
if (IOS_VERSION_LESS_THAN_6_0) {
    nc = [[MyCustomNavigationControllerSupportingAllOrientations alloc] initWithRootViewController:vc];
} else {
    nc = [[UINavigationController alloc] initWithRootViewController:vc];
}
[self.navigationController presentModalViewController:nc animated:YES];

В iOS6 я использую UINavigationController.

На пред-iOS6 I подкласс UINavigationController, например:

@interface MyCustomNavigationControllerSupportingAllOrientations : UINavigationController
@end

@implementation MyCustomNavigationControllerSupportingAllOrientations
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
@end
0 голосов
/ 26 февраля 2012

Я видел такое же поведение;в моем случае проблема заключалась в том, что я реализовал shouldAutorotateToInterfaceOrientation, чтобы возвращать YES безусловно для родительского контроллера представления, но НЕ для представленного контроллера модального представления.Поэтому я подозреваю, что комментарий Шегги Лягушки является ключевым: хотите ли вы включить ландшафтный режим или нет, вам нужно убедиться, что реализации mustAutorotateToInterfaceOrientation двух контроллеров представления согласуются, или это приведет к странностям.

0 голосов
/ 30 апреля 2011

У меня была похожая проблема при открытии модальной почты. Принудительное вращение у меня не сработало, но вызов presentModalViewController на контроллере основного представления приложения, а не на дочернем контроллере представления, решил проблему.

0 голосов
/ 20 сентября 2010

На основании

Когда приложение находится в альбомной ориентации режим ( который я планирую форсировать ), отображение модального вида вызывает родительский вид для поворота в портрет режим.

и

В соответствии с запросом содержание метод shouldAutoRotate SavedGamesTableViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Override to allow orientations other than the default portrait orientation.
return YES;
}

Итак, вы говорите, что родительский контроллер представления еще не настроен на принудительное использование только с использованием альбомной ориентации, и когда вы показываете модальное представление, в котором установлены все ориентации, вы задаетесь вопросом, почему ваш родительский вид вращается в портрет, когда вы поворачиваете устройство в портрет? Я не понимаю вашего вопроса ... разве вы не говорите, что родительский контроллер представления в настоящее время настроен на поворот в портрет? Разве это не то, что должно происходить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...