iOS5 Safari:键盘不会隐藏在主屏幕的HTML应用程序中

iOS5 Safari: Keyboard does not hide in a home screen HTML app

本文关键字:屏幕 HTML 应用程序 隐藏 Safari 键盘 iOS5      更新时间:2023-09-26

我正在为iPad开发一个自定义应用程序,它可以作为主屏幕应用程序运行,但全部由CSS/HTML/Javascript制作。(此处不使用SDK)

我遇到了一个问题,我在我的页面中内置了一个计算器,没有隐藏键盘。不管我怎么做,键盘都不动。我已经广泛地搜索了这个问题,并尝试了我能想到的所有方法,但无论我怎么做,键盘总是不动。

我试图隐藏键盘的解释:

我已经尝试模糊所有输入字段,以消除焦点。我试过将焦点放在非文本字段项上。

在今年早些时候/去年,Stackoverflow上有几个线程建议这两个选项,但它们似乎不再工作了。

为了进一步测试,我在计算器上方的img上放了一个空白的a href="#",这样我就可以将焦点设置在非输入项上,看看这是否会自动最小化键盘。当我点击键盘上方的项目时,焦点改变,我不再处于输入模式,但键盘保持向上。

苹果在最新的更新中破坏了这个功能吗?如果是这样,有没有解决办法?

下面是一些不能工作的示例代码:

    $('input').blur(function(e) {
        // Keyboard disappeared
           window.scrollTo(0, 1);
    }); 

这段代码成功地移除了输入的焦点,但是键盘保持在上面。我还尝试了相反的方法,只关注非文本元素。此外,如前所述,我只是直接在页面上添加了一个非文本元素,但仍然没有隐藏键盘。

非常感谢任何帮助,如果我错误地转发了,请随意链接/辱骂我。:)

你应该能够模糊它,只要使用像这样的东西

$('input').blur();

你应该把它放在函数/过程中,当你想要它消失的时候,除非你想完全禁用它?

document.activeElement.blur()在一个try catch块内为我工作。(可能你还需要一个setTimeout?我不需要超时,尽可能避免超时是很重要的,因为它们很容易导致讨厌的heisen-bug !)

还要仔细检查您没有在鼠标下拉或单击事件(这会导致键盘显示)的某个地方调用focus()。您可以使用console.log(document.activeElement.tagName);或类似的工具来帮助查找当前关注的内容。

然而,如果你找不到解决方案,那么我非常有兴趣看看你如何让键盘保持up…我有一个用途:-)