0

我正在为android开发一个phonegap应用程序。

如果你不熟悉phonegap,只知道它是一个包含webview的应用程序,其余的都是html/js。

我有一个普通的输入,当我点击它时,我有一个被触发的普通键盘,右下角有一个“开始”按钮。

但有时,我会得到一个在右下角只有一个“Enter”键的键盘。这个键盘通常行为怪异,不想隐藏。

我不明白为什么我的输入会触发不同的键盘。我只想保留第一个。

好一个

坏的

4

1 回答 1

0

所以 iScroll + Android + Form 字段似乎不能很好地协同工作。我遇到了一些令人讨厌的问题,文本框消失,无法正常工作,键盘将整个页面向上移动。奇怪的东西。

我们通过设置每个文本框/选择/表单字段来解决它,它解决了我们的问题 stopPropagationtouchstart

var selectField = document.getElementById('textbox');   
    selectField.addEventListener('touchstart', function(e) {
        e.stopPropagation();
        //updateScrollPosition(this, true);
    }, false);

编辑

我可以考虑的另一个解决方法是覆盖 onBeforeScrollStart 以防止在选定元素中发生触摸时滚动(输入、选择和 textAreas 是这里的问题,但您可以定位任何东西):

iScroll.options.onBeforeScrollStart = function(e) {      

    var target = e.target;


    while (target.nodeType != 1) target = target.parentNode;     
    if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA'){
        e.preventDefault();
     }};

}

编辑 2

所以以上都没有帮助。不久前我也遇到了同样的情况,所以我想出了一个(可怕的)黑客来解决这个问题。我不能分享这段代码(哦,许可证!)但我所做的步骤是:

  • 检查是不是android,版本低于3.0
  • 隐藏您的输入并用 div 替换
  • 当你点击 div 时,运行一个触发点击隐藏 EditText 的原生位层
  • 添加一个 textChangeListener 并将所有内容复制到您的 div 和您的输入中。
  • 真的很生气,这是您找到的最佳解决方案,并反复将键盘敲击在桌子上。
于 2013-05-17T14:45:36.203 回答