IOS下Input元素focus后无法唤起键盘

最近有个需求就是一进入页面需要主动唤起键盘。然后在网上找了一圈都没有好的解决方案。

然后翻文档,看到了有这样一个API:keyboardDisplayRequiresUserAction

文档的描述是:

When this property is set to true, the user must explicitly tap the elements in the web view to display the keyboard (or other relevant input view) for that element. When set to false, a focus event on an element causes the input view to be displayed and associated with that element automatically.
The default value for this property is true.

大意就是这个API默认为true,这种情况下需要用户主动去点击元素,这样才能唤起键盘,通过focus去模拟的话是不行的。如果API设为false.这个时候是可以通过focus去模拟,并唤起键盘的。

那么问题来了,请问各位是通过什么样的方式才能做到一进入到某个页面,然后自动能focus到表单元素(input, textarea)并唤起键盘?

阅读 14.1k
3 个回答

http://www.cnblogs.com/dannyx...

目前看到的比较靠谱的解决方法,修改app的配置文件:
config.xml

<preference name="KeyboardDisplayRequiresUserAction" value="true" />

true改为false

document.getElementById('input').focus()

现在我的方案是

进入页面后,给页面加一层mask,在mask绑定点击事件,通过这个点击事件去触发键盘的唤起.

    let maskEle = document.querySelector('.mask'),
        inputEle = document.querySelector('.input');
        
    maskEle.addEventListener('click', () => {
        inputEle.focus()
        //然后隐藏maskEle
    });

安卓机下4.x的版本通过inputfocus事件可以直接唤起键盘,不过5.0后也需要用户去主动的唤起键盘.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏