Я видел этот столбельный пост: shouldAutorotateToInterfaceOrientation is not working in iOS 6. Ответ состоял в том, чтобы добавить категорию под названием RotationIn_IOS6. Я сделал это, и представления для разных контроллеров view корректно работают в iOS6. Проблема в iOS5.shouldAutorotateToInterfaceOrientation не работает в iOS 5
Мне нужно только несколько видов для поворота во всех направлениях, остальные должны быть в портрете или в PortraitUpsideDown. Проблема, с которой я сталкиваюсь, состоит в том, что либо все не вращаются (code1), либо после того, как она вращается в ландшафт, она остается в той же ориентации, пока вы не вернетесь к портрету (код2).
Code1:
@implementation UINavigationController (RotationIn_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
@end
Код 2:
@implementation UINavigationController (RotationIn_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self.visibleViewController isKindOfClass:[MyClassToRotate class]])
{
return [self.visibleViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
else
{
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
}
нужны некоторые рекомендации по этому вопросу. Не знаете, как это решить.
EDIT:
Code3:
1) Удалены shouldAutorotateToInterfaceOrientation из категории. 2) Добавлен этот код для моего конкретного класса
- (BOOL)shouldAutorotate
{
//returns true if want to allow orientation change
return TRUE;
}
- (NSUInteger)supportedInterfaceOrientations
{
//decide number of origination tob supported by Viewcontroller.
return UIInterfaceOrientationMaskAll;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
//from here you Should try to Preferred orientation for ViewController
return TRUE;
}
Результата -> Всех ViewController заперты в портрете. Не удается получить доступ к PortraitUpsideDown. После того, как в моем ViewController, он может вращаться, но когда вы выходите из ViewController, запертый в пейзаже ..
EDIT 2:
Каждый ViewController содержит этот код:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate {
return NO;
}
обновил вопрос с code3 .. – lakesh
У меня уже есть shouldAutorotateToInterfaceOrientation в моем коде ... – lakesh