【问题标题】:Preventing iOS Keyboard from scrolling page in cordova 3.5防止iOS键盘在cordova 3.5中滚动页面
【发布时间】:2014-09-12 00:14:30
【问题描述】:

我正在使用 Cordova 3.5 和 jQuery mobile 构建 iOS 应用程序。我在大多数应用程序中禁用了滚动;但是,当我选择输入字段时,iOS 键盘会打开并向上滚动页面。我不想要这个功能。由于输入足够高以至于键盘不会覆盖它,我希望页面保持静止,而键盘覆盖页面的底部。

这个问题与this one 等许多其他问题相似,与here 发布的问题相反。

但是,发布的答案都对我不起作用,所以我将在这里发布我的解决方案。

【问题讨论】:

    标签: javascript jquery ios cordova


    【解决方案1】:

    添加this plugin

    cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git
    

    在命令行中。

    在 javascript 的任何位置添加以下行以禁用从键盘滚动。

    cordova.plugins.Keyboard.disableScroll(true);
    

    在我的用例中,我添加了一个 deviceready 事件侦听器来评估这一行,禁用应用程序中各处的自动键盘滚动。

    就是这样!

    【讨论】:

    • 这个插件禁用了我的应用程序中的所有滚动 - 我需要做任何其他设置来只禁用自动滚动而不是所有滚动吗?
    • 您可能想探索使用 cordova.plugins.Keyboard.disableScroll(false) 重新启用滚动;当键盘被隐藏时。您可以使用 native.keyboardhide 事件判断键盘何时隐藏。 github.com/driftyco/ionic-plugin-keyboard 的自述文件包含一些关于插件如何工作的信息,这些信息可能很有用。不过,我已经有一段时间没有处理这个问题了,所以如果你遇到问题,你可能想问一个新问题。
    • 找不到名称“cordova”。 L38: ngAfterViewInit() { L39: cordova.plugins.Keyboard.disableScroll(true);
    • 该功能已在最新版本的插件中被移除。 github.com/ionic-team/cordova-plugin-ionic-keyboard/issues/42
    【解决方案2】:

    根据我的经验,作为一名尽可能避免使用 3rd 方插件的开发人员,我发现 Cordova 中的虚拟键盘问题最好通过插件来解决。

    Cordova 插件目录有几个keyboard 插件 (http://cordova.apache.org/plugins/?q=keyboard)

    我推荐以下插件:
    https://github.com/cjpearson/cordova-plugin-keyboard

    它提供了以下命令在虚拟键盘打开时禁用滚动。

    cordova.plugins.Keyboard.disableScrollingInShrinkView(true);
    

    【讨论】:

    【解决方案3】:

    经过大量研究,我找到了一个非常简单的答案,但其他方法均无效。

    在你的css中做:

    html {
      touch-action: none;
    }
    body {
      touch-action: all;
    }
    

    【讨论】:

    • 这适用于类星体科尔多瓦应用程序。插件解决方案不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多