我正在使用 Telerik AppBuilder 和 Cordova 3.5 版
我的问题是,我不希望我的应用程序中的 webview 滚动。每次需要滚动时,我都想使用 iScroll,我将通过我的代码处理滚动。
如果输入获得焦点并且由于在 iScroll 中滚动而不可见,应用会自动滚动 webview。
我使用 list 中的这段代码阻止了在 android 中滚动聚焦输入:
<preference name="android-windowSoftInputMode" value="adjustPan|stateVisible" />
为了防止打字时滚动,我的下一个想法是:
- 防止按键默认
- 存储按下的键
- 滚动到我在 iScroll 中的输入
- 将键粘贴到输入中(现在它确实可见并且上面的级别不会滚动 webview)
但是android v4.4.4 中的以下代码并不能防止默认:
$input.on( 'keypress', function(e)
{
e.preventDefault();
e.stopPropagation();
return false;
});
这是一个错误吗? 有什么解决方法吗?
编辑:
为了查看浏览器正在更改的属性,以便我可以将其更改回来,我查看了一些元素,但找不到:
- $(window).scrollTop() -> 不变。
- margin-top 和 iScroll 使用的元素顶部 -> 不变。
最佳答案
我知道这是一个老问题, 但我认为你的问题是当按键事件被触发时,'keydown' 事件已经被发送到输入,这是发送实际键的事件。按住字符键之后会触发按键。 所以你应该尝试防止默认 'keydown' 事件,并且可能还有 'keypress' 以防按住时重复字母。
$input.on( 'keydown keypress', function(e)
{
e.preventDefault();
});
关于android - 在 Android Phonegap App 中填写时防止滚动到输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204519/