0

Android用のphonegapアプリケーションを開発しています。

phonegap に慣れていない場合は、それが webview を含むアプリであることを知っておいてください。残りは html/js で構成されています。

通常の入力があり、それをクリックすると、通常のキーボードがトリガーされ、右下隅に「Go」ボタンがあります。

しかし、右下隅に「Enter」キーしかないキーボードが時々あります。このキーボードは通常、奇妙な動作をし、隠したくありません。

入力が異なるキーボードをトリガーする理由がわかりません。最初のキーボードだけを保持したいです。

良いもの

悪いもの

4

1 に答える 1

0

そのため、iScroll + Android + Form フィールドはうまく連携していないようです。テキストボックスが消える、正しく機能しない、キーボードがページ全体を上に移動するなどの厄介な問題に直面しました。奇妙なもの。

すべてのテキストボックス/選択/フォームフィールドを stopPropagationオンにして解決し、問題を解決しました。touchstart

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

編集

私が考えることができる他の回避策は、選択した要素でタッチが発生したときにスクロールを防ぐために onBeforeScrollStart をオーバーライドすることです (ここでは入力、選択、およびテキストエリアが問題でしたが、何でもターゲットにできます)。

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 に答える