Incapaz de gerenciar orientação com vários controladores de exibição
-
21-09-2019 - |
Pergunta
Estou tentando criar um aplicativo para iPhone que tenha duas subviews na janela principal. Cada visualização possui sua própria subclasse UIViewController associada a ela. Além disso, dentro da implementação de cada controlador, adicionei o seguinte método:
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
Assim, eu esperaria que ambos os pontos de vista respondam a mudanças na orientação. No entanto, este não é o caso. Apenas o primeiro A exibição adicionada à janela principal do aplicativo responde à orientação. (Se eu trocar a ordem em que as visualizações são adicionadas, apenas a outra visão responde. Em outras palavras, serão trabalhadas-mas apenas uma de cada vez.)
Por que é isso? Não é possível lidar com as mudanças de orientação de mais de uma visão?
Obrigado!
EDIT: Alguém tinha essa pergunta, então estou copiando minha solução aqui:
Consegui abordar esse problema fornecendo uma visualização raiz e um controlador de visualização raiz com o método "deveugotortato ..." e adicionando minhas outras visualizações como subviews à exibição root. Os subviews herdam o comportamento de rotatividade automática, e seus controladores de visão associados não precisam substituir "deveriam ..."
Solução 2
Finalmente vou postar minha solução aqui:
Basicamente, tudo se resumia a ter um UiviewController "raiz". Nisso, eu tenho o método:
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
Também adicionei as visualizações que queria auto-rotate como subviews para o UIView do UIViewContoller da raiz. Essas subviews também têm controladores de exibição, mas fazem não sobrepor shouldAutorotateToInterfaceOrientation
. De fato, adicionar esse método a esses controladores de visualização parece não ter nenhum efeito. Somente a visão raiz contoller's shouldAutorotateToInterfaceOrientation
Parece funcionar e todas as subvisões são giradas corretamente.
Outras dicas
Você precisa substituir o método do devedor da interioridade deve nos três controladores que você possui.
Você pode tentar implementar este método na classe, que a visualização contém as visualizações do seu ViewController