Cordovaにおけるソフトウェアキーボードの扱い方

CordovaやMonacaを利用していると、ソフトウェアキーボードによる文字入力を行うことがあるでしょう。何も設定を行わなければ、ソフトウェアキーボードにより画面下部が隠れてしまいます。そのため表示範囲を調整する必要がありますので、今回はその方法を紹介したいと思います。

cordova-plugin-ionic-keyboard

利用するプラグインは「cordova-plugin-ionic-keyboard」です。cordovaで次のコマンドを入力してください。

Monacaを利用しているのであれば、クラウドIDEよりCordovaプラグインのインポートより「cordova-plugin-ionic-keyboard」を指定すればインポート可能です。

利用可能なイベント

「cordova-plugin-ionic-keyboard」をインポートすると次の4つのイベントが発生します。

  • keyboardWillShow (キーボード表示前)
  • keyboardDidShow (キーボード表示後)
  • keyboardWillHide (キーボード非表示前)
  • keyboardDidHide (キーボード非表示後)

今回は「keyboardWillShow」「keyboardWillHide」の2つのイベントを利用して実現したいと思います。

実現方法

実現方法は非常に簡単です。表示している要素の高さを変更するだけですね。具体的には次のようにします(全ソースコードは最後に記します)。

今回のポイントは、画面の高さの変数を別に用意している点です。この方法であれば、文字入力時に予想変換などによりソフトウェアキーボードの高さが変更されても、それに合わせて画面の高さも変更されます。

確認方法

多くの方はPCで実装していると思いますが、もちろんデスクトップブラウザではソフトウェアキーボードが表示されないので、確認することはできません。そのため、いちいち面倒ですが確認は実機で行う必要があります。

次はサンプルに用意したAndroid実機のスクリーンショットです。上部にキーボードを表示するためのinput要素を用意しており、その下には1~20を表示しています。キーボードが表示されていないときは、スクロールすると最下部に20が表示されます。

input要素をタップすると、ソフトウェアキーボードが表示されます。

そして画面をスクロールすると、最下部に20が表示されています。つまり、表示領域がソフトウェアキーボード分狭くなっていることがわかります。

まとめ

CordovaやMonacaでソフトウェアキーボードを扱うことは簡単です。しかし、確認方法は実機でしかできないためそこに時間を取られるでしょう。この記事を確認して一発で実装できるといいですね。

ソースコード

こちらのソースコードは、Monacaの「Onsen UI V2 JS Tabbar」テンプレートを元にしています。上記を再現したい場合は、index.htmlを次のように変更してください。

» お仕事のご依頼はこちら