我正在使用使用iframe嵌入已经移动友好的web应用程序的电话盖上应用程序。在WebApp中,有一个搜索函数,该函数焦点文本字段揭示虚拟键盘。到目前为止,一切都很好...
但是,我正在使用一个库,该库在文档(iframe中的一个)上注册touchstart侦听器。因此,如果虚拟键盘在文档中显示用户触摸时,键盘停止工作。
来自iPad(或Xcode中的iPad模拟器...我已经在7.0.3上进行了测试),然后遵循说明:https://s3.amazonaws.com/ypassets-andy/app-frame。html
有趣的是,如果您不将其包裹在iframe中,键盘就不会破裂。转到此处:https://s3.amazonaws.com/ypassets-andy/app.html并按照说明看到它不会破裂。
我一直在敲我的头,但不知道如何使这件事有效。作为参考,这些堆栈交换帖子似乎相关,但我无法与他们相关:
- 防止在移动浏览器上滚动而不防止输入聚焦
- 单击iPhone supressing输入焦点上的延迟
- iFrame中的iPad输入
感谢您的想法!
安迪
这似乎是一个未固定的iOS错误。唯一的解决方法是将输入从iframe移动到主文档中。
更长的故事:
安迪(Andy)试图解决这个问题,但最终失败了(用于模态中的登录/settingsdialog)。从来没有发现它几乎杀死了我,但这也许是一个很好的禅意。这是我们消除/尝试的方法:
- iframe不集中/专注于不同的文档
- 在设置焦点之前完全模糊所有内容
- setrange等而不是焦点
- 触摸start堆栈中的手动和火灾事件
- 检查事件是否多次发射
- 查看CSS属性是否像用户选择或触摸touch-callout有任何差异
所有的最终假设是,它是某种程度上相关的webkit"滚动输入到视图"逻辑,它在iOS 7中获得了一些更新。