Em vários casos, desejo adicionar uma barra de ferramentas na parte superior do teclado do iPhone (como no iPhone Safari quando você está navegando em elementos de formulário, por exemplo).
Atualmente, estou especificando o retângulo da barra de ferramentas com constantes, mas porque outros elementos da interface estão em fluxo - barras de ferramentas e barras de navegação no topo da tela - toda vez que fazemos uma pequena alteração na interface, a barra de ferramentas sai do alinhamento.
Existe uma maneira de determinar programaticamente a posição do teclado em relação à visualização atual?
fonte
Então, basicamente:
No método init:
E, em seguida, tenha os métodos mencionados acima para ajustar a posição da barra:
Pode torná-lo bonito, animando a mudança de posição, envolvendo-o em
fonte
UIKeyboardFrameBeginUserInfoKey
que fornecem as mesmas informações.UIKeyboardFrameEndUserInfoKey
para obter o quadro final (em coordenadas de tela) do teclado. Você também pode usarUIKeyboardAnimationDurationUserInfoKey
eUIKeyboardAnimationCurveUserInfoKey
para obter o resto dos parâmetros de que precisa para corresponder exatamente ao comportamento do teclado.Isso se baseia na resposta existente do tonklon - estou apenas adicionando um trecho de código que mostra uma barra de ferramentas preta semitransparente na parte superior do teclado, junto com um botão "pronto" à direita:
e se
-resignKeyboard
parece com:Espero que ajude alguém.
fonte
Se você se registrar para notificações de teclado, ou seja
UIKeyboardWillShowNotification
UIKeyboardWillHideNotification
, etc, a notificação que você receberá conterá os limites do teclado nouserInfo
dict (UIKeyboardBoundsUserInfoKey
).Veja a
UIWindow
referência da classe.fonte
No 3.0 e superior, você pode obter a duração e a curva da animação do
userInfo
dicionário de notificações.por exemplo, para animar o tamanho da visualização para abrir espaço para o teclado, registre-se no
UIKeyboardWillShowNotification
e faça algo como o seguinte:Faça uma animação semelhante para
UIKeyboardWillHideNotification
.fonte
Crie este método e chame-o em ViewWillLoad:
fonte
Não há como (AFAIK) obter as dimensões da visualização do teclado. No entanto, é constante, pelo menos em todas as versões do iPhone até agora.
Se você calcular a posição da barra de ferramentas como um deslocamento da parte inferior da sua visualização e levar em consideração o tamanho da sua visualização, não deverá se preocupar se uma barra de navegação está presente ou não.
Por exemplo
Em vez de definir, você pode criar facilmente uma
keyboardHeight
função que retorna o tamanho com base no fato de o teclado estar sendo exibido e mover o posicionamento da barra de ferramentas para uma função separada que reorganiza seu layout.Também pode depender de onde você faz esse posicionamento, pois é possível que o tamanho da sua visualização possa mudar entre ser carregado e mostrado com base na configuração da sua barra de navegação. Acredito que o melhor lugar para fazer isso seria em viewWillAppear.
fonte