作者:张春雷11111 | 来源:互联网 | 2023-09-25 14:49
我对这个实现有点挣扎.我正在构建我的第一个HelloWorld!android(cordova)应用程序,需要键盘始终显示并避免隐藏它,就像用户单击后退按钮或任何其他输入时一样.为什么?基本
我对这个实现有点挣扎.我正在构建我的第一个Hello World! android(cordova)应用程序,需要键盘始终显示并避免隐藏它,就像用户单击后退按钮或任何其他输入时一样.为什么?基本上我的HTML中没有任何输入元素来触发焦点&显示键盘,它是一种“终端模拟器”,用户执行某些命令.键盘根本没有显示所以我去了,我添加了以下内容:
安装了Ionic Keyboard插件
cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git
添加了config.xml的权限
在我的App模块中,以下行:
var myApp = angular.module('myApp', ['ionic']); myApp.run(function($ionicPlatform) { $ionicPlatform.ready(function() { if(window.cordova && window.cordova.plugins.Keyboard) { window.cordova.plugins.Keyboard.show(); // Show Keyboard on startup // and here Trigger a show keyboard when hidden window.addEventListener('native.hidekeyboard', keyboardHideHandler); function keyboardHideHandler(e){window.cordova.plugins.Keyboard.show(); } } }); });
现在,上面的实现工作,但我不认为这样处理它是优雅的,我不喜欢键盘关闭然后再次弹出的感觉.
>除了Ionic键盘的插件之外还有其他方法可以配置我的Android应用程序以便始终显示键盘吗?
>这是使用Cordova / Ionic框架的正确方法吗?
希望我走在正确的轨道上.任何提示都将受到赞赏.
谢谢
截图
解决方法:
编辑:我认为这样做的标准方法是:https://stackoverflow.com/a/1510005/1091751. 当按下后退按钮时,这不会阻止它关闭,但是,您可以尝试在platforms / android中编辑实际的Cordova Android文件以覆盖以下方法(取自https://stackoverflow.com/a/6571093/1091751):
@Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { InputMethodManager manager = (InputMethodManager) this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); manager.toggleSoftInput(0, InputMethodManager.SHOW_FORCED); } return false; }
我没有测试过这个,但是如果你添加一个隐藏的输入,当你的应用加载时你最初关注它,然后在它失去焦点时不断重新聚焦,该怎么办?我不确定这与显式调用keyboard.show()有什么不同,但它可能会阻止键盘打开/关闭抖动.
就像是:
然后
document.getElementById('hiddenFocus').focus()
然后不断重新调整它以保持键盘:     // HTML标签=恒定焦点
.directive('constantFocus', function(){ return { restrict: 'A', link: function(scope, element, attrs){ element[0].addEventListener('focusout', function(e){ element[0].focus(); }); } }; })