2013-06-04 1 views
1

Мое приложение поддерживает iOS6 +. При рассмотрении вопроса о iOS5 я добавил следующее решение.iOS5, presentModalViewController, неправильно отображающий новый вид

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) { 
    self.modalPresentationStyle = UIModalPresentationFullScreen; 
    [self presentViewController:readerViewController animated:YES completion:NULL]; 
} 
else { 
    self.modalPresentationStyle = UIModalPresentationFullScreen; 
    [self presentModalViewController:readerViewController animated:YES]; 
} 

Однако модальный вид представлен вертикально в моем приложении для ландшафта. Я имею в виду, мое приложение - пейзаж, Модальный вид просто «лежит» там, а не полноэкранный режим, как я установил, просто прикроем часть экрана, а непокрытый черный.

Интересно, может ли кто-нибудь помочь. Спасибо, вперед.

ответ

0

Во-первых, presentViewController:animated:completion: был доступен since iOS 5.0, поэтому вам не нужно беспокоиться о версии. В случае, если вы действительно хотите, чтобы проверить наличие метода, вы должны использовать

if ([self respondToSelector:@selector(presentViewController:animated:completion:)]) 

Для модальной точки зрения, вам необходимо установить modalTransitionStyle и modalPresentationStyle на представленного контроллера например readerViewController в вашем случае. Таким образом, ваш код должен быть

readerViewController.modalTransitionStyle = UIModalPresentationFullScreen; 
readerViewController.modalPresentationStyle = UIModalPresentationFullScreen; 
[self presentModalViewController:readerViewController animated:YES completion:NULL]; 
+0

Ваш путь действительно представляет модальный вид. Но важно то, что он просто «лгал» там, а не полноэкранный режим, как я установил. Я также попробовал [self.presentingViewController presentViewController: readerViewController animated: YES complete: NULL]; в то время как это не сработало. – Calios

+0

Возможно, я пропустил некоторые детали? Родительское представление поддерживает пейзаж и модальное представление обо всех ориентациях. В iOS6 + я представляю модальный вид из его родительского представления, и он отлично работает. Хотя в iOS5 проблема выходит. Если это не проблема с версией, какая еще проблема может быть? Вы можете думать об этом? – Calios

1

Сирень: - Что сказала тиаса, верна. вам не нужно беспокоиться о версии. Я думаю, вы не задали ориентацию для ModalView с требуемым представлением Oreintation.

Значит, если ваш mainViewController (из которого вы представляете ModalView) поддерживает только ландшафтный режим, то в modalViewController вы должны установить Ориентации, ограничиваясь присутствием только в Landscape View.

Вы должны написать код ориентации, написанный в mainViewController, также в modalViewController.

эти методы: -

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft); 
    // return YES; 

} 

-(BOOL)shouldAutorotate{ 
    return YES; 
} 

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskLandscape; 
} 

Просьба вернуть, если он не решит вашу проблему, и если это не поможет, вы знаете, что делать;).

+0

У меня есть методы, которые вы упомянули наверху, и эта проблема связана с проблемой авторотажа незадолго до этого. Родительское представление поддерживает пейзаж и модальное представление обо всех ориентациях. В iOS6 + я представляю модальный вид из его родительского представления, и он отлично работает. Хотя в iOS5 проблема выходит. Если это не проблема с версией, какая еще проблема может быть? Вы можете думать об этом? – Calios

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