最近困惑于Phonegap的各种诡异问题以及关于键盘事件的控制,实属非常无奈。加上@大城小胖 说了一句,越了解html5就越觉得他的局限性,实在是有种同是天涯沦落人的感觉。不过无论如果,需求都得想办法来解决。
控制键盘事件,在Phonegap或者直接说在ios的uiWebView中,其实都是无法用js来控制的,这个时候只能够透过native code来解决,然后放出接口给js来控制。这里就有一段关于ios键盘降落的native code,需要的朋友可以随便拿去。作出这个脚本主要的想法是这样的。项目中涉及到一个搜索框,搜索完毕后理应将键盘降下,降下键盘我们需要用到native code。
如果你在项目中有使用到任何的phonegap plugin,或许你只是需要将这个方法塞到你的plugin中。注意是以m为拓展名的文件。例如如果你是希望插入到childBrowser的插件中,就添加到 ChildBrowserCommand.m 文件中即可。因为这里主要是以接口作为调用的。
代码如下:
/* keyboard auto hide solution */ - (void) hideKeyboard:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options { //UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect; NSLog(@"hideKeyboard is being called"); [self.webView endEditing:YES]; }
那么调用的时候js的代码是:
function hideKeyboard(){ console.log("关闭键盘"); cordova.exec("ChildBrowserCommand.hideKeyboard", "隐藏键盘"); }
就是这么简单,注意这里我们使用到的cordova,所以版本过低的用户就肯定是无效的啦。自觉升级到Phonegap 1.5以上吧。现在都2.0啦。