BoredApe
BoredApe
  • 发布:2016-01-14 18:10
  • 更新:2020-07-24 15:13
  • 阅读:50571

使用Native.js实现打开页面默认弹出软键盘

分类:Native.js

先来体验下这个神奇的功能(兼容iOS和Android):


此功能需要在模块权限中配置Native.js

var nativeWebview, imm, InputMethodManager;  
var initNativeObjects = function() {  
    if (mui.os.android) {  
        var main = plus.android.runtimeMainActivity();  
        var Context = plus.android.importClass("android.content.Context");  
        InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");  
        imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);  
    } else {  
        nativeWebview = plus.webview.currentWebview().nativeInstanceObject();  
    }  
};  
var showSoftInput = function() {  
    if (mui.os.android) {  
        imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);  
    } else {  
        nativeWebview.plusCallMethod({  
            "setKeyboardDisplayRequiresUserAction": false  
        });  
    }  
    setTimeout(function() {  
       //此处可写具体逻辑设置获取焦点的input  
       var inputElem = document.querySelector('input');  
              inputElem.focus();   
    }, 200);  
};  
mui.plusReady(function() {  
    initNativeObjects();  
    showSoftInput();  
});

补充更新:

调用plus.webview.create()创建新的webview,会导致当前webview失去焦点,因此可能出现键盘闪一下又消失的情况。

解决方案:将创建webview的代码放到显示键盘之前(initNativeObjects方法之前)。

另外,为了强制当前webview获得焦点,可像如下方式修改showSoftInput方法:

var showSoftInput = function() {  
    var nativeWebview = plus.webview.currentWebview().nativeInstanceObject();  
    if (mui.os.android) {  
        //强制当前webview获得焦点  
        plus.android.importClass(nativeWebview);  
        nativeWebview.requestFocus();  
        imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);  
    } else {  
        nativeWebview.plusCallMethod({  
            "setKeyboardDisplayRequiresUserAction": false  
        });  
    }  
    setTimeout(function() {  
       //此处可写具体逻辑设置获取焦点的input  
       var inputElem = document.querySelector('input');  
              inputElem.focus();   
    }, 200);  
};
20 关注 分享
蔡繁荣 k_liu yank90 safaring 小岳岳 MooGu 陌上花 Trust 6***@qq.com 仙人指路 大毕 9***@qq.com 赵 田云 8***@qq.com 最光阴 miskss Yizhiyu ___K 2***@qq.com

要回复文章请先登录注册

爆栈工程师

爆栈工程师

ios 10只有第一次打开有效果
2017-03-31 15:06
shimeifang

shimeifang

在iOS 10上没有效果,请问大神知道什么原因吗
2017-03-27 16:49
流浪

流浪

ios 无效啊 求教
2017-02-07 17:47
9***@qq.com

9***@qq.com

完美,感谢分享
2017-01-14 15:33
f***@qq.com

f***@qq.com

还不知道怎么用,简单把代码拷到JS文件中,没效果,点击输入框,系统自动会弹出软键盘
2016-12-26 14:34
破军

破军

安卓弹出的软键盘,搜索变成回车,点击以下input就又变回搜索了,为什么啊?
2016-12-16 18:17
j***@163.com

j***@163.com

用个bug,在ios中偶尔会出现页面不能向下划动,哎不好用
2016-12-05 18:03
Native_O

Native_O

感谢,解决了我好几天的困扰!
2016-11-30 15:57
大毕

大毕

我用这代码的页面是预加载,结果登录页面就弹出键盘了,这个怎么处理好?想只有在进入页面显示的时候弹出键盘
2016-11-23 10:16
7***@qq.com

7***@qq.com

回复 yank90 :
怎么解决的?
2016-11-22 13:42