Desativar rotação para um item do UITabbar
Eu tenho um uitabbarcontroller com 4 itens da barra de guias e cada item da barra de guias tem um controlador de navegação.
Eu precisava bloquear a orientação de um item do uitabbar apenas para Portrait. Então eu implementei o seguinte código:
Criou um controlador de barra de guias personalizado e adicionou o seguinte código:
MainTabBarController.m
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// You do not need this method if you are not supporting earlier iOS Versions
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
-(NSUInteger)supportedInterfaceOrientations
{
if (self.selectedViewController)
return [self.selectedViewController supportedInterfaceOrientations];
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return YES;
}
Criou um controlador de navegação personalizado para usar em um dos uitabbaritems e adicionou o seguinte código:
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
return YES;
}
e para o uiviewcontroller no controlador de navegação personalizado, adicionei o seguinte código:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
O código acima funciona bem. Meu problema é que, se você for ao item da barra de guias (cuja orientação está bloqueada para Protrait) quando o dispositivo já estiver no modo Paisagem, a orientação mudará para Paisagem. Alguém pode me ajudar como resolver meu problema.
Obrigado, Anand.