javascript - iOS 键盘未关闭,由 iframe 中的输入触发
问题描述
我的网页上有一个模式窗口,其中包含<iframe>
存储在远程服务器上的页面。此页面包含带有一些<input>
元素的表单。当用户点击模态框上的关闭按钮时,带有 iframe 的模态框将隐藏。
问题:
如果用户开始在其中输入<input>
内容<iframe>
然后关闭模式,则键盘不会关闭,直到他按下Done
按钮。
我已经简化了这个例子并删除了模态实体并呈现了两个按钮:一个是隐藏模态,另一个是从 DOM 中删除它。
我尝试window.activeElement
将焦点显式设置为根页面上的不同元素。(您可以在演示中查看),尝试在or上调用.blur()
方法。在我的应用程序中隐藏,但我试图将其从页面中删除。iframe
iframe.contentWindow
<iframe>
当前行为:
- 用户开始在
<input>
里面输入一些东西<iframe>
- iOS 键盘打开
- 删除/隐藏 iframe
- 即使
<input>
不存在或隐藏,iOS 键盘仍然打开。
我假设如果不再显示任何触发它的元素,则应该隐藏键盘,就像在 Android/Chrome 上所做的那样。
在这种情况下,我有几个问题:
- 我可以在我的应用程序中以某种方式解决此行为吗?
- 如果是 iOS 或 WebKit 中的错误,Apple 或社区是否提供了一些错误跟踪器来解决此类问题?
解决方案
使用响应者链: UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
使用 UIView 的 endEditing:self.view.endEditing(true)
推荐阅读
- php - 使用 laravel 8 上传文件时不允许进行 Chmod() 操作
- google-apps-script - On[Event] Google Apps 脚本挂钩
- c# - 使用@Html.ActionLink 将参数传递给Controller
- r - 'data' 必须是二维的(例如数据框或矩阵)
- keyboard-shortcuts - 在 iTerm2 中执行 shell 命令的键盘快捷键
- java - 从另一个目录中的另一个源文件导入一个类
- cocoa - 我正在 macOS 上尝试 GCDAsyncSocket 以获取特定网络接口的外部 IP。这不适用于网络扩展 VPN。任何想法?
- android - 如何使用 react native 将 pdf 文件保存到文件系统(ios/android),可以在应用程序外部访问
- kotlin - 应用程序启动时WorkManager会重新启动,我应该使用AlarmManager吗?
- reactjs - 当我的 React 应用程序从开发到部署在 Heroku 上时,为什么我的侧边栏组件落后于其他所有内容?