Cordova 3.4 - Обнаружение события клавиатуры
Я пытаюсь обнаружить showkeyboard
а также hidekeyboard
события в моем приложении выполняются благодаря Cordova 3.4.0 и JQuery Mobile 1.4.2. В файле конфигурации атрибут fullscreen установлен в true (он мне нужен).
Дело в том, что в LogCat я не могу читать (по-видимому, это из-за полноэкранного режима):
SoftKeyboardDetect: игнорировать это событие
Есть ли решение для обнаружения этих двух событий? Я попробовал альтернативный способ, обнаружив размытие и фокус событий на моем поле ввода. Это работает, но когда клавиатура закрыта кнопкой возврата, эти события не вызываются.
Итак, я попытался обнаружить событие Backbutton, но оно не работает ( http://simonmacdonald.blogspot.fr/2011/05/overriding-back-button-in-phonegap.html).
4 ответа
Я думаю, что это будет работать для ваших нужд -
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady () {
document.addEventListener('hidekeyboard', onKeyboardHide, false);
document.addEventListener('showkeyboard', onKeyboardShow, false);
}
function onKeyboardHide() {
console.log('onKeyboardHide');
}
function onKeyboardShow() {
console.log('onKeyboardShow');
}
// редактировать
Поскольку вы не можете подключиться к этим событиям, вам нужен плагин. Этот здесь сделает свое дело.
Для установки плагина выполните cordova plugin add com.ionic.keyboard
// This event fires when the keyboard will be shown
window.addEventListener('native.keyboardshow', keyboardShowHandler);
function keyboardShowHandler(e){
console.log('Keyboard height is: ' + e.keyboardHeight);
}
// This event fires when the keyboard will hide
window.addEventListener('native.keyboardhide', keyboardHideHandler);
function keyboardHideHandler(e){
console.log('Goodnight, sweet prince');
}
Плагин Ionic keyboard предоставляет вам события native.showkeyboard и native.hidekeyboard, которые можно использовать следующим образом: После добавления его в ваш проект:
cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git
используйте это так:
window.addEventListener('native.hidekeyboard', keyboardHideHandler);
window.addEventListener('native.showkeyboard', keyboardShowHandler);
function keyboardHideHandler(e){
alert('Goodnight, sweet prince');
}
function keyboardShowHandler(e){
alert('Keyboard height is: ' + e.keyboardHeight);
}
Дополнительное описание и функции можно найти на github. Это работает для меня в Cordova 3.4 с полноэкранным режимом, настроенным в файле config.xml. Тот факт, что он имеет 15036 загрузок, говорит о многом, но, как я уже сказал, я также использовал его в полноэкранном режиме на точной версии Cordova (и на самом деле это было единственное, что работало для меня, плюс он также поддерживает ios)
Привет, если вам нужны события showkeyboard и hidekeyboard в приложении на основе phonegap, вам нужно убрать опцию fullscreen, тогда сработают только эти события.
Я не мог заставить ни один из ответов здесь работать, поэтому я решил поделиться своим решением.
Мой сценарий - я использую группу кнопок Bootstrap для навигации между экранами, и некоторые экраны должны иметь <input/>
поля с фокусом по умолчанию. Ну, когда я сфокусируюсь на поле, это вызовет экранную клавиатуру. Я пытался спрятать клавиатуру, когда новый <input/>
был отображен, но кажется, что клавиатура Android отображается сразу после того, как страница закончила рендеринг (после моего звонка Keyboard.hide();
работает)
Моя работа заключается в использовании setTimeout
, как показано ниже.
$("#my_input").focus();
window.setTimeout(function(){
Keyboard.hide();
}, 1);
Почему это работает? Я верю, потому что он помещает мой обратный вызов достаточно далеко обратно в очередь обратного вызова.
ПРИМЕЧАНИЕ. Вы можете все еще увидеть, как программная клавиатура быстро отображается, а затем скрывается. Не нашли способ обойти это.