2016-05-27 8 views
0

Я работаю над приложением, в котором я использую только одну ориентацию, которая представляет собой портрет. Это устройство настройка ориентации:Ошибка при использовании метода shouldAutorotate(), когда UIAlertview отображается в контроллере ландшафта?

enter image description here

Но в моем приложении есть Видеоплеер (Пользовательский игрок MPMoviePlayerViewController), который я хотел показать только в режиме Landscape права, и это не должно быть повернут. Это работает нормально, я имею в виду это Пользовательский проигрыватель показывает в ландшафтном справа отлично, но когда я использую UIAlertview то приложение разбитые по этому методу:

- (BOOL)shouldAutorotate { 


    return NO; 

} 

Вот некоторые другие методы ориентации:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeRight; // or Right of course 
} 

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000 
- (NSUInteger)supportedInterfaceOrientations 
#else 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations 
#endif 
{ 
    return UIInterfaceOrientationMaskLandscape; 
} 

Я получаю эту ошибку:

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [UIAlertController shouldAutorotate] is returning YES' 
+0

может быть, что помощь: http://stackoverflow.com/questions/29534105/uialertview-crashs-in-ios-8-3 и https://www.google .co.in/search? q = [UIAlertController + shouldAutorotate] + + возвращает + ДА% 27 & ie = utf-8 & oe = utf-8 & client = firefox-b & gfe_rd = cr & ei = ZxtIV-6uFKfT8geUpoiwDg –

ответ

-1

решение 1. Перейти к info.plist и удалить другие ориентации, которые вы не пе изд: -

enter image description here Решения 2. Используйте следующий код (где ваш): -

-(NSUInteger)supportedInterfaceOrientations { 
    UIViewController *vC = self.topViewController; 
    return vC.supportedInterfaceOrientations; 
} 

-(BOOL)shouldAutorotate { 
    UIViewController *vC = self.topViewController; 
    return [vC shouldAutorotate]; 
} 
+0

Вопрос уже говорит о том, что Info.plist указывает только портретная ориентация. –

0

iOS8: ответ UIAlertController

#import "UIAlertController+Portrait.h" 

@implementation UIAlertController (Portrait) 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

@end 
0

iHTCboy по фиксированному для меня после перехода на стриж.

В быстром 4:

extension UIAlertController { 

override open var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .all } 

}