Casual & Fellow

Phonegap keyboard autohide in ios 关于Phonegap 键盘实现JS控制隐藏

最近困惑于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啦。