1

GWT 2.5.1 と Cordova 2.9.0.0 を使用した iOS アプリケーションの開発。

非常に大きな問題が発生しました。テキスト ボックスをタップすると、仮想キーボードが表示されますが、JavaScript フォーカス イベント (またはウィンドウのサイズ変更以外のイベント) は発生しません。

そのため、どのテキストボックスがタップされたかを判断できません。さらに、画面の向きの変更やキーボードの外観が原因で、ウィンドウのサイズが変更された理由さえわかりません。

document.activeElement は BODY 要素を指します。

2 回目のタップ (キーボードが表示されている場合) は、onFocus イベントを発生させます。

iPhoneシミュレーター5.0および6.0で試しました

問題は、最初のタップでアクティブなテキスト ボックスを取得する方法、または仮想キーボードが表示されているかどうかを確認する方法です (phonegap プラグインを作成せずに)。

更新: この問題は、config.xml に KeyboardShrinksView=true がある場合にのみ発生します。

4

1 に答える 1

0

一般的に、私が理解している限り、この問題は iOS Web ビューでのフォーカス イベント処理の特殊性が原因で発生します (ゴースト クリック イベントに関連するもので、深く掘り下げる時間がありませんでした)。

解決策は、jQuery で「タッチ」イベントをキャッチし、手動でタップされた入力にフォーカスを設定することです。ここでjqueryが必要な理由はわかりませんが、それが「タッチ」イベントをキャッチする唯一の方法です

コード (GWT jQuery ポート gwtquery を使用):

$("input").live(Event.ONTOUCHEND, new Function() {
@Override
public boolean f(final Event e) {
    $(e).focus();
    return false;
   }
}); 

これまでのところ、多かれ少なかれうまく機能しています。

于 2013-11-06T12:00:40.303 に答える