1

使用 GWT 2.5.1 和 Cordova 2.9.0.0 开发 iOS 应用程序。

遇到了一个很大的问题:点击任何文本框时会出现虚拟键盘,但没有触发 javascript 焦点事件(或除窗口调整大小之外的任何其他事件)。

所以我无法确定哪个文本框被点击了。此外,我什至无法说出窗口大小发生变化的原因——因为屏幕方向变化或键盘外观。

document.activeElement 指向 BODY 元素。

第二次点击(当键盘可见时)会触发 onFocus 事件。

在 iphone 模拟器 5.0 和 6.0 上试过

所以问题是我如何在第一次点击时获得活动文本框或检查虚拟键盘是否可见(无需编写 phonegap 插件)?

更新:仅当 config.xml 具有 KeyboardShrinksView=true 时才会出现此问题

4

1 回答 1

0

一般来说,据我了解,这个问题的发生是由于 iOS webview 中焦点事件处理的特殊性(与幽灵点击事件有关的事情。没有时间深入挖掘)。

解决方案是使用 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 回答