Как вызвать всплывающее окно модального вида, повернув устройство в альбомную ориентацию?

#iphone #objective-c #cocoa-touch #uiviewcontroller #modalviewcontroller

#iPhone #objective-c #cocoa-touch #uiviewcontroller #modalviewcontroller

Вопрос:

Я работаю над приложением, в котором я хочу показывать контроллер модального вида, когда пользователь поворачивает устройство. Оно должно отключаться, когда пользователь поворачивает его обратно в портретную ориентацию. Во время поворота главный контроллер вида поворачиваться не должен.

Как я могу этим управлять?

Я попытался поместить код в shouldAutorotateToInterfaceOrientation: метод отображения контроллера модального вида, но всегда получал ошибку.

Какие-нибудь идеи?

Ответ №1:

В AppDele&ate вы могли бы использовать

 [[NSNotificationCenter defaultCenter] addObserver:self
                                        selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChan&eNotification
                                           object:nil];
  

и определите метод

 - (void) didRotate:(NSNotification *)notification
  

В этом методе выберите новую ориентацию и примените или удалите контроллер модального вида.

В shouldAutorotateToInterfaceOrientation: ограничьте исходный вид, чтобы он принимал только ту ориентацию, которую вы хотите, чтобы он имел.

Ответ №2:

вам нужно поместить этот код в

 -(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
  

метод вашего контроллера просмотра. В основном вы настроите свой shouldAutorotateToInterfaceOrientationMethod: на возврат TRUE для любых ориентаций, которые вы хотите поддерживать (включая всплывающее окно модального вида). и затем в первом из перечисленных способов вы реализуете, что контроллер модального просмотра становится активным.