在Android Phonegap App中填写时阻止滚动输入

时间:2014-08-08 13:21:38

标签: android cordova input keypress preventdefault

我使用Telerik AppBuilder和Cordova版本3.5

我的问题是,我不希望我的应用中的webview滚动。每次需要滚动时我都想使用iScroll,我将按照我的代码处理滚动。

如果输入变得焦点并且由于在iScroll中滚动而无法显示,则应用程序会自动滚动webview。

我在清单中使用此代码阻止了在Android中聚焦输入的滚动:

<preference name="android-windowSoftInputMode" value="adjustPan|stateVisible" />

为了防止在打字时滚动,我的下一个想法是:

  1. 防止按键默认
  2. 存储按键
  3. 滚动到iScroll中的输入
  4. 将密钥粘贴到输入中(现在它确定可见,上面的级别不会滚动webview)
  5. 但是在android v4.4.4中使用以下代码并不能阻止默认:

        $input.on( 'keypress', function(e)
        {
            e.preventDefault();
            e.stopPropagation();
            return false;
        });
    

    这是一个错误吗? 有没有解决方法呢?

    编辑:

    要查看浏览器正在更改的属性,以便我可以将其更改回来,我查看了一些元素,但无法找到它:

    1. $(window).scrollTop() - &gt;不要改变。
    2. iScroll使用的margin-top和top of elemets - &gt;不要改变。

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题, 但我认为你的问题是,当按键事件被触发时,&#39; keydown&#39;事件已经发送到输入,这是发送实际密钥的事件。在按住字符键之后,键盘会被触发。 所以你应该试着防止“彻底打击”这样的事情。事件,也可能是&#39;按键&#39;如果持有重复的信件。

$input.on( 'keydown keypress', function(e)
    {
        e.preventDefault();
    });