Eu estava desenvolvendo um aplicativo onde usei Lungo , Angular e Lungo-Angular-Bridge entre os dois e me deparei com um problema em que o teclado estava ocultando campos de entrada quando o usuário gravou o campo de entrada.
O comportamento esperado era que o formulário rolasse para cima até que o campo de entrada ficasse visível na tela.
Com a ajuda do Sr. @otupman , chegamos a uma diretiva parecida com esta
directives.directive('softkeyboard', [function() {
return {
restrict: 'C',
replace: false,
transclude: false,
link: function(scope, iElement, iAttrs) {
iElement.bind('focus' ,function() {
setTimeout(function() {
iElement[0].scrollIntoView();
}, 1000);
});
}
};
}]);
Cada campo de entrada que pode estar oculto pelo teclado, só precisamos adicionar um class = “softkeyboard” . O que a diretiva faz é apenas rolar o elemento de entrada para o topo da tela.
Se você está se questionando sobre o tempo limite, nós também o fazemos, embora tenhamos uma possível explicação para isso: precisamos esperar até que o teclado apareça e o navegador recalcule a janela de visualização.