为啥 iPhone 6 及更高版本的 wkwebview 不接受底部的点击?

Posted

技术标签:

【中文标题】为啥 iPhone 6 及更高版本的 wkwebview 不接受底部的点击?【英文标题】:Why is iPhone 6 and above wkwebview not accepting taps on the bottom?为什么 iPhone 6 及更高版本的 wkwebview 不接受底部的点击? 【发布时间】:2017-02-05 08:04:29 【问题描述】:

我在单独的 html 代码中注意到了这一点,但我可以使用以下 html Web 应用程序视图的 url 示例重复相同的问题,例如在混合应用程序中使用。为了让阅读本文的人更容易重现问题,我将在此处包含该 url(我不需要使用该 url。我有自己的代码。但是这个 url 做同样的事情,所以是一个很好的例子有人读这个来检查。)

https://framework7.io/examples/tab-bar

Image: These bottom nav bar items do not respond to touch on iPhone 6s or 6s Plus, but DO work on 5s and SE

复制:

    使用 wkwebview 创建一个简单的 ios 应用程序(您可能已经从以前的项目中获得了一个)

    只需确保 webview 加载上述 url,您就可以观察到问题。

如果 Swift 应用程序中的 wkwebview 在 iPhone 5s 或更低版本的全屏 wkwebview 中加载上述 URL,则底部选项卡菜单(包含信息、收件箱、上传和照片选项)将起作用。但如果在 iPhone 6s 或 6s Plus 中打开,底部的选项卡菜单将不起作用。你可以点击选项,什么都不会发生。

重要提示:这不在 Safari 中。这发生在 Swift 应用程序中的 wkwebview 中打开链接的上下文中。这是可重复的。

我检查了图层调试器,底部选项卡没有任何障碍。

非常感谢。

【问题讨论】:

我在 iOS 10 上试过,它可以工作。你运行的是哪个版本。 谢谢,@New16。我在 iOS 10 以及 8.1 和 8.2 上尝试过。我也在三款不同的 iPhone 上尝试过。物理设备和模拟器中的结果相同。具体来说:不在 Safari 中,而是在 Swift 项目的 WKWebView 中。在 iPhone 6s 和 6s Plus 中,底部的标签按钮不起作用,但在 iPhone 5s 和 SE 中,这些按钮可以工作。 【参考方案1】:

我打算删除这个,但你永远不知道。稍后其他人可能会有同样的问题。也许这会对他们有所帮助。

所以这是我刚刚想出的答案:

我没有添加自动约束来确保 webview 与窗口保持相同的大小。这就是为什么它可以在 5s 和 SE 等较小的手机上运行(因为 webview 恰好足够大。)同时,6s 和 6s Plus 的大屏幕超出了 webview 的大小。

我在情节提要中看到了它并添加了约束以确保 webview 可以拉伸到屏幕的大小,并且一切都开始工作了。较低的导航栏不再是我的水龙头无法触及的地方。

我确实觉得奇怪的是内容显示在整个屏幕上,但只有检测到触摸的区域没有延伸到屏幕上,但这是我检查代码并了解事物排列方式的机会。

主要问题已经解决了。

【讨论】:

我认为 HTML5 是根据设备屏幕大小来呈现网页的。这就是您能够正确查看网页的原因,我以编程方式添加了 WKWebView。所以,我没有发现任何问题。 为此干杯!

以上是关于为啥 iPhone 6 及更高版本的 wkwebview 不接受底部的点击?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SSMS 17.x 及更高版本不支持 SSIS

ios7及更高版本导致图像图标错误

希望我的应用程序只能在 iPhone 4 及更高版本上运行,而不能在其他设备上运行

为啥支持 C++11 及更高版本的 C++ 编译器需要 Boost.SmartPtr?

为啥我会收到错误消息:Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.10 及更高版本

为啥在 Android Q 及更高版本上不需要 WRITE_EXTERNAL_STORAGE