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

使用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

要回复文章请先登录注册

1***@qq.com

1***@qq.com

为什么我用了,在android中软键盘要几秒后才出现,有点慢,要在哪里修改?
2016-11-22 11:13
唐自然

唐自然

真的赞。
2016-10-08 20:41
jamzhang

jamzhang

安卓上弹出的软键盘把输入框覆盖了,如何解决啊
2016-10-02 23:13
绝版咖啡

绝版咖啡

回复 yank90 :
怎么解决的。。。Android6.0还是会这样
2016-09-26 16:52
5***@qq.com

5***@qq.com

为什么我用了,在android版本 6.0中默认弹出软键盘要三秒后才出现,有点慢,要在哪里修改?
2016-09-13 10:39
apche

apche

弹出的软键盘把输入框覆盖了
2016-08-02 11:30
qixi

qixi

mark
2016-07-29 16:17
流浪

流浪

回复 BoredApe :
没有把 测试输入框在聚焦状态下 在后台预加载还是会丢失焦点。。。
2016-07-13 12:40
BoredApe

BoredApe (作者)

回复 1***@163.com :
此问题已解决,可以使用最新的HBuilder(7.3.0)测试
2016-07-10 19:03
1***@163.com

1***@163.com

回复 3***@qq.com :
同样的问题,解决了吗
2016-07-09 19:02