我如何使用PhoneGap的软键盘(org.apache.cordova.plugin.softkeyboard)?

时间:2014-05-11 02:45:36

标签: javascript android cordova phonegap-plugins

我正在编写我的第一个PhoneGap应用程序,我需要让键盘以编程方式显示和消失。不幸的是,它不起作用,但我想知道我是否正确地做到了。这是事情的状态:

我使用$ cordova plugin search keyboard在命令行中找到此插件,然后我安装了它:

$ cordova plugin add org.apache.cordova.plugin.softkeyboard Fetching plugin "org.apache.cordova.plugin.softkeyboard" via plugin registry Installing "org.apache.cordova.plugin.softkeyboard" for android

基于another SO answer,我将此行添加到我的config.xml:

<plugin name="SoftKeyBoard" value="org.apache.cordova.plugin.SoftKeyBoard" />

我把softkeyboard.js放在myapp / www / js /中,我在html中引用它就像这样:

<script type="text/javascript" charset="utf-8" src="js/softkeyboard.js"></script>

安装完成后,SoftKeyboard.java出现在myapp / plugins / org.apache.cordova.plugin.softkeyboard中。但是为了好的衡量,我还在myapp / src / org / apache / cordova / plugin /中添加了一个副本。

最后,我将这些添加到我的html:

<button id="keyboard">Toggle Keyboard</button>

<script> var softkeyboard = window.cordova.plugins.SoftKeyBoard; $('#keyboard').toggle(softkeyboard.show, softkeyboard.hide); </script>

正如您可能已经猜到的那样,当我重建并单击按钮时,没有任何反应。我应该做些什么?

谢谢!

P.S。 - 在看到许多SO答案中使用的插件(单数)和插件(复数)之后,我将两种方式重命名,并且不影响结果。

1 个答案:

答案 0 :(得分:1)

使用cordova add plugin命令添加插件后,不必包含插件的js文件。你只需要包括cordova.js(我认为你已经这样做了,但最好澄清一下):

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>

添加插件后,您应该构建或准备项目以使插件生效。 Cordova cli工具将javascript和native(android,ios等)代码复制到platforms/%platform_name%目录中。插件大多不能在浏览器中工作,但永远不会在/www目录中(因为该目录中应该没有cordova.js)。

我认为这里的问题是你使用的jQuery切换功能。它实际上是切换元素的显示状态的函数。 (见:http://api.jquery.com/toggle/

当您模拟或运行Android应用程序时,这将有效。

<script>
   var isKeyboardShown = false;
   var softkeyboard = window.cordova.plugins.SoftKeyBoard;
   $('#keyboard').click(function() {
       (isKeyboardShown = !isKeyboardShown) ? softkeyboard.show() : softkeyboard.hide();
   });
</script>