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);

Почему это работает? Я верю, потому что он помещает мой обратный вызов достаточно далеко обратно в очередь обратного вызова.

ПРИМЕЧАНИЕ. Вы можете все еще увидеть, как программная клавиатура быстро отображается, а затем скрывается. Не нашли способ обойти это.

Другие вопросы по тегам