alterar manualmente orientação do teclado para uma visão que está em cima de uma câmera de visão

votos
0

Estou basicamente tentando reproduzir a funcionalidade principal do app At Once. Eu tenho uma visão de câmera e outro ponto de vista, com vista texto sobre ele.

Eu adicionar dois pontos de vista para a janela. Tudo está bem até agora.

[window addSubview:imagePicker.view];
[window addSubview:textViewController.view];

Eu entendo que a UIImagePickerController não suporta auto-rotação, então eu lidar com isso manualmente, observando UIDeviceOrientationDidChangeNotifications e aplicar as transformações necessárias para o textViewController.view.

Agora, o problema aqui é o teclado. Se eu não fizer nada, ele só permanece no modo retrato. Eu posso fazê-lo girar, adicionando o seguinte código ao manipulador de notificação.

[[UIApplication sharedApplication] setStatusBarOrientation:interfaceOrientation];
[textView resignFirstResponder];
[textView becomeFirstResponder];

No entanto, o seguinte teste simples produz um comportamento estranho.

  1. Inicie o aplicativo no modo retrato.
  2. Rodar o dispositivo de 90 graus no sentido horário.
  3. Rodar o dispositivo de 90 graus no sentido contrário (de volta à posição inicial).
  4. Rodar o dispositivo de 90 graus no sentido horário.

Depois do passo 4, em vez do teclado de modo horizontal, o teclado estilo retrato é mostrado, está inclinado para caber no quadro teclado paisagem.

Talvez a minha abordagem é errada desde o início. Eu queria saber se alguém tem sido capaz de fazer de forma confiável o teclado mudar a sua orientação em resposta a setStatusBarOrientation.

Publicado 12/03/2010 em 16:48
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Bem, faça o que fizer, ele vai ser hack. A câmera / selecionador só é suposto para trabalhar no modo portait. Você pode contornar isso mexer com transformações. Mas, infelizmente, você não pode realmente depender de tudo funcionando corretamente quando você faz hacks como essa. Desculpe, nenhuma resposta final.

Respondeu 12/03/2010 em 20:00
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more