我正在编写我的第一个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答案中使用的插件(单数)和插件(复数)之后,我将两种方式重命名,并且不影响结果。
答案 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>