Phonegap Android键盘覆盖输入元素滚动被禁用

coh*_*air 15 android cordova

我尝试了很多不同的解决方案,没有什么是我想要的.我想要的是键盘显示在内容之上(保持内容相同的大小),同时能够滚动到键盘覆盖的输入元素.

我试过的每一个解决方案都会给我一个或另一个,但不是两个.

我试过的解决方案:

  • 解决方案在这里.将android:windowSoftInputMode ="adjustPan"和android:configChanges ="orientation | keyboardHidden"添加到AndroidManifest.xml中的主要活动中.
  • 上面的解决方案使用"adjustResize"而不是"adjustPan".
  • 解决方案在这里.添加到我的confix.xml.

使用adjustPan使我的元素保持相同的大小,但禁用滚动.使用adjustResize调整整个页面的大小,使一切变得微小.保持默认设置,仅调整包含输入元素的包装器的大小,但启用滚动.

我设法找到完全相同的问题(解答)这里.他们通过将应用程序的大小调整为150%并滚动到覆盖的输入元素来"修复"它,但他们说它并不理想.

任何帮助表示赞赏.

Sam*_* R. 12

对于config.xml中的大多数情况,将全屏首选项更改为false.那就行了.

<preference name="fullscreen" value="false" />
Run Code Online (Sandbox Code Playgroud)


Bis*_*oli 10

我有最有效的解决方案来自动滚动输入并使其可见.首先,您需要添加离子键盘插件(适用于任何cordova项目),因为eventlistener"showkeyboard"现在不起作用.

cordova plugin add ionic-plugin-keyboard --save
Run Code Online (Sandbox Code Playgroud)

然后在'keyboardshow'事件的事件处理程序中添加以下代码:

window.addEventListener('native.keyboardshow', function(e){ 
    setTimeout(function() {
        document.activeElement.scrollIntoViewIfNeeded();
    }, 100);
});
Run Code Online (Sandbox Code Playgroud)

PS:仅在Android(Chrome)和Safari上支持此功能.:d


kat*_*nco 5

我对android项目输出有同样的问题,在我的情况下,输入元素没有向上移动键盘。经过一夜的搜索(包括那些配置更改和其他更改),我发现在我的angularjs cordova项目中

StatusBar.overlaysWebView(true);
StatusBar.hide();
Run Code Online (Sandbox Code Playgroud)

我的控制器中的线路引起了烦人的问题。我将这些行用于ios statusbar问题,现在我将其置于if条件下,问题已解决。

if( device.platform=="iOS")
  {
   StatusBar.overlaysWebView(true);
   StatusBar.hide();
  }
Run Code Online (Sandbox Code Playgroud)

  • 你救了我的命,谢谢。不明白为什么状态栏会像这样影响应用程序,这对科尔多瓦来说真的是一种耻辱...... (2认同)
  • 这里同样的问题......这个问题很疯狂。 (2认同)