web-dev-qa-db-ja.com

Cordova 3.4-キーボードイベントの検出

Cordova 3.4.0とJQuery Mobile 1.4.2のおかげで、実行中のアプリケーションでshowkeyboardおよびhidekeyboardイベントを検出しようとしています。構成ファイルでは、fullscreen属性がtrueに設定されています(必要です)。

実は、LogCatでは、私は読むことができません(見たところ、これはフルスクリーンモードが原因です)。

SoftKeyboardDetect:このイベントを無視します

これら2つのイベントを検出する解決策はありますか?入力フィールドでぼかしとフォーカスのイベントを検出する別の方法を試しました。動作しますが、キーボードが戻るボタンで閉じられている場合、それらのイベントは呼び出されません。

だから、私はbackbuttonイベントを検出しようとしましたが、動作しません( http://simonmacdonald.blogspot.fr/2011/05/overriding-back-button-in-phonegap.html ) 。

11
Schnapse

これはあなたのニーズにうまくいくと思います-

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');
}
19
Ross

Ionicキーボードプラグイン は、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 にあります。これは、config.xmlファイルで構成された全画面モードのCordova 3.4で私に役立ちました。 15036 ダウンロードがあるという事実は多くのことを言いますが、私が言ったように、正確なCordovaバージョンでフルスクリーンで自分自身も使用しました(そして、それが実際に私のために働いた唯一のものでしたさらに、iOSもサポートします)

5
Andreas

こんにちはshowkeyboardhidekeyboardが必要な場合、フルスクリーンオプションを削除する必要があります。これらのイベントのみがトリガーされます。

2
Arjun T Raj

ここで答えを得ることができなかったので、自分の解決策を共有したいと思いました。

私のシナリオでは、Bootstrapボタングループを使用して画面間を移動します。特定の画面には、デフォルトのフォーカスを持つ_<input/>_フィールドが必要です。まあ、私がフィールドに焦点を合わせると、ソフトキーボードが表示されます。新しい_<input/>_が表示されたときにキーボードを非表示にしようとしましたが、ページのレンダリングが完了した直後(Keyboard.hide();への呼び出しの後)にAndroidキーボードが表示されているようです実行されます)

以下に示すように、私の回避策はsetTimeoutを使用することです。

_$("#my_input").focus();
window.setTimeout(function(){
  Keyboard.hide();
}, 1);
_

なぜこれが機能するのですか?コールバックがコールバックキューに十分に戻されるためと思います。

注:ソフトキーボードがすぐに表示されてから非表示になることがあります。それを回避する方法が見つかりません。

1
aaronbartell