【发布时间】:2020-01-05 00:20:09
【问题描述】:
在我的应用程序中,我使用WKWebView 组件显示网站,但由于该网站具有<iframe> 内容,因此滚动不起作用。 iframe 内容本身会记录点击和滑动,但它从不滚动。
当我用 Safari 打开同一个页面时,它运行良好,我可以与 iframe 的内容进行交互并毫无问题地滚动。
我的 iframe 采用网页的全宽和全高,我添加了这个属性:
-webkit-overflow-scrolling: touch;
但这无济于事。不幸的是,我无法显示有问题的网页,因为它包含专有数据并且正在登录屏幕。
我宁愿在不修改网页的情况下解决这个问题,因为 Safari 可以正常工作。
编辑:看起来iframe 可能正在检测事件而不是“转发”它们,因为当页面上还有例如导航栏时(这不是iframe 的一部分)我可以刷它和滚动。但是,由于屏幕上的空间非常小,我不希望除了 iframe 本身之外没有任何其他元素。
编辑 2:我试图直接在 WKWebView 中显示来自 iframe 的页面,但它仍然根本不滚动。在 Safari 中运行良好。
解决方案:最后,我通过更改 WKWebView 的 userAgent 属性以根据设备匹配适用于 iPhone 或 iPad 的 iOS 12 Safari,从而解决了这个问题。有问题的网站在用户交互方面相当复杂,所以我猜他们使用默认用户代理向浏览器发送“不正确”的设置。
【问题讨论】: