rainysky252
rainysky252
2021-06-25 13:38
采纳率: 33.3%
浏览 95
已结题

混合开发:Android webwiew内调用input.focus()有概率无法弹出软键盘

需求是在Webwiew内,点击一个非输入框的组件,拉起软键盘并处理输入内容。输入框本身不可见。

我的实现方式是在js里监听一个canvas的touchend事件,事件处理里调用另一个input组件的focus()方法(input组件位置放到页面外),可以实现需求。但是有时会出现软键盘无法拉起的情况,反复点击也无法弹出。

在问题现场下,我在另一个按钮的点击事件里打印document.activeElement.id,跟input组件的id一致,说明貌似焦点是有成功设置到input上的,但是输入框上并没有出现选中效果,软键盘也没有弹出。

尝试过先blur再focus,延时调用focus,都不能解决问题。

重现方式还不确定,反复切换前后台,关开应用后,有概率出现,概率并不太低。

请教大佬如何解决该问题,或者如果无解的话是否有替代方案实现该需求,非常感谢。

  • 点赞
  • 收藏

3条回答 默认 最新

  • wujiahang129
    JioWu 2021-06-30 17:49

    可以尝试下让安卓原生去强制弹出软键盘,通过JS交互

    点赞 1 评论
  • g984160547
    帅次 2021-06-25 18:42

    你可以去看看:https://shuaici.blog.csdn.net/article/details/70257611也许又你想要的答案。

    如有帮助,麻烦采纳。

    点赞 评论
  • Feng_wwf
    NDSC专家-王文峯 2021-06-29 13:39

    采纳,谢谢

    webview加载一个网页版聊天时,由于输入框还要加载表情,没有使用< input >标签,使用的< pre >标签, 
    这时点击输入框无法弹出微软键盘 
    在网上查询说给webview获取焦点即可。

     webView.requestFocus();

    直接使用上述代码无效,这里需要指定一个动作方向,就是在点击时获取焦点

    webview.requestFocus(View.FOCUS_DOWN);

    经测试可以弹出软键盘。
     

    点赞 评论

相关推荐