Files
ionic-framework/js/utils/keyboard.js
2014-03-24 13:11:03 -05:00

52 lines
1.6 KiB
JavaScript

(function(ionic) {
ionic.Platform.ready(function() {
if (ionic.Platform.is('android')) {
androidKeyboardFix();
}
});
function androidKeyboardFix() {
var rememberedDeviceWidth = window.innerWidth;
var rememberedDeviceHeight = window.innerHeight;
var keyboardHeight;
window.addEventListener('resize', resize);
function resize() {
//If the width of the window changes, we have an orientation change
if (rememberedDeviceWidth !== window.innerWidth) {
rememberedDeviceWidth = window.innerWidth;
rememberedDeviceHeight = window.innerHeight;
console.info('orientation change. deviceWidth =', rememberedDeviceWidth, ', deviceHeight =', rememberedDeviceHeight);
//If the height changes, and it's less than before, we have a keyboard open
} else if (rememberedDeviceHeight !== window.innerHeight &&
window.innerHeight < rememberedDeviceHeight) {
document.body.classList.add('footer-hide');
//Wait for next frame so document.activeElement is set
ionic.requestAnimationFrame(handleKeyboardChange);
} else {
//Otherwise we have a keyboard close or a *really* weird resize
document.body.classList.remove('footer-hide');
}
function handleKeyboardChange() {
//keyboard opens
keyboardHeight = rememberedDeviceHeight - window.innerHeight;
var activeEl = document.activeElement;
if (activeEl) {
//This event is caught by the nearest parent scrollView
//of the activeElement
ionic.trigger('scrollChildIntoView', {
target: activeEl
}, true);
}
}
}
}
})(window.ionic);