Problemas com orientação da interface e UitabBarController
-
26-09-2019 - |
Pergunta
Problema rápido:
Eu tenho um uitabbarcontroller com 2 controladores de navegação [vamos chamá -los de controlador para a esquerda e direita
No controlador esquerdo selecionado padrão, posso pressionar um novo controlador de exibição que detecta a orientação da interface.
No controlador certo, posso empurrar o mesmo controlador de visualização, mas não detectará a orientação da interface, ou, nesse caso, ele nem sequer entra no método do deveriio de interface deve
Haaalp !!
Se for de alguma relevância, o contollador de exibição que estou pressionando use a propriedade HidesBottombarwenpushed.
Solução
O seu UITABBARController implementa o giro automático? Qualquer Child ViewController que deseja implementar o AutoToTate deve ter seus pais implementar o autorotate.
Outras dicas
Provavelmente esse é o seu problema:
Os controladores de barra de guias suportam uma orientação de retrato por padrão e não giram para uma orientação da paisagem A menos que todos os controladores de visão raiz suportem tal orientação. Quando ocorre uma mudança de orientação do dispositivo, o controlador de barra de guias consulta sua matriz de controladores de visão. Se qualquer um deles não suportar a orientação, o controlador de barra de guias não altera sua orientação.
A solução é substituir o seguinte método em todos os controladores de exibição que levam à sua visão:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return YES;
}
Por exemplo, em vez disso, usando o padrão UITabBarController
No IB, substitua -o por sua própria subclasse contendo apenas o método acima.
Estou um pouco atrasado para a festa, mas encontrei um problema com a autorotação no Startup para um aplicativo de barra de guias que eu queria sempre correr em retrato.
O Plist do aplicativo possui as configurações necessárias para iniciar e permitir apenas o modo retrato, e todos os meus controladores de exibição permitem apenas o modo retrato. No entanto, quando iniciei o aplicativo segurando meu iPhone na paisagem, o aplicativo começou em retrato, mas depois girei para a paisagem!
Em vez de subclasse UITabBarController
, Eu simplesmente substitui UITabBarController
's shouldAutorotateToInterfaceOrientation:
método usando uma categoria na aula UITabBarController
. Incluí este código no meu delegado de aplicativo:
@implementation UITabBarController(UITabBarControllerCategory)
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Funciona lindamente e é bastante leve.