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 ) 。
これはあなたのニーズにうまくいくと思います-
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キーボードプラグイン は、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もサポートします)
こんにちはshowkeyboardとhidekeyboardが必要な場合、フルスクリーンオプションを削除する必要があります。これらのイベントのみがトリガーされます。
ここで答えを得ることができなかったので、自分の解決策を共有したいと思いました。
私のシナリオでは、Bootstrapボタングループを使用して画面間を移動します。特定の画面には、デフォルトのフォーカスを持つ_<input/>
_フィールドが必要です。まあ、私がフィールドに焦点を合わせると、ソフトキーボードが表示されます。新しい_<input/>
_が表示されたときにキーボードを非表示にしようとしましたが、ページのレンダリングが完了した直後(Keyboard.hide();
への呼び出しの後)にAndroidキーボードが表示されているようです実行されます)
以下に示すように、私の回避策はsetTimeout
を使用することです。
_$("#my_input").focus();
window.setTimeout(function(){
Keyboard.hide();
}, 1);
_
なぜこれが機能するのですか?コールバックがコールバックキューに十分に戻されるためと思います。
注:ソフトキーボードがすぐに表示されてから非表示になることがあります。それを回避する方法が見つかりません。