2014-10-17 3 views
-1

Сценарий таков:Как обрабатывать авторотацию в каждом контроллере представления в ios 8?

позволяет говорить ViewControllers A, B.

поддерживает только портретный режим. B поддерживает все режимы.

Я нажимаю на уменьшенное изображение из A и показываю полное изображение в B. Таким образом, автоматическое вращение отлично работает в B. Оно отлично работает, если я вернусь к A из B, когда B находится в портретном режиме.

Но проблема в том, что если я сохраню свой телефон в ландшафтном режиме, когда я был в B, тогда, если я вернусь к A, тогда он также покажет пейзаж, который не должен произойти.

я работал совершенно нормален в iOS7 но Мессинг в прошивке 8.

Может кто-нибудь помочь с этим? Заранее спасибо.

+0

посмотрите размер класс один раз ..! – Avis

+0

@ Avis444 Да, я посмотрел на них. Но я не понимаю, как их реализовать. Можете ли вы предоставить мне пример для их реализации? –

ответ

0

С кодом что-то не так. Я просто реализовал его для тестирования, и он отлично работает.

Я addded к A:

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Добавлена ​​B:

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

и добавил кнопку A, чтобы открыть B:

- (IBAction) buttonAction:(id)sender 
{ 
    UIStoryboard *story = [UIStoryboard storyboardWithName:@"itShouldWork" bundle:nil]; 
    MyViewController *controller = (MyViewController *)[story instantiateInitialViewController]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controller]; 
    [self presentViewController:nav animated:YES completion:nil]; 
} 

Как я уже сказал, это работает хорошо. протестирован на устройстве iphone 5 (iOS 8). Построенный с Xcode 6

0

Это, кажется, ошибка в прошивке 8.

В качестве временного решения вы можете обернуть ваш контроллер B в UINavigationController. Наряду с проверкой для IOS версии он будет выглядеть

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8")) { 
    [self presentViewController:[[UINavigationController alloc] initWithRootViewController:controllerB] animated:YES completion:nil]; 
} else { 
    [self presentViewController:controllerB animated:YES completion:nil]; 
} 

Макросы для проверки IOS версии можно найти here.

 Смежные вопросы

  • Нет связанных вопросов^_^