WebView qml 在 iOS 11 上无法正常工作

Posted

技术标签:

【中文标题】WebView qml 在 iOS 11 上无法正常工作【英文标题】:WebView qml doesn't work correctly on iOS 11 【发布时间】:2017-10-24 14:33:50 【问题描述】:

我有一个问题,我需要在应用程序中打开 url,我使用了 WebView,但无法正常工作。

导入这个:

import QtWebView 1.0

我的代码:

Rectangle
    width: Screen.width
    height: Screen.height
    color: "Orange"
    anchors.fill: parent
    z:9999999

    WebView 
        id: webviewer
        anchors.fill: parent
        url: "http://www.google.com"

        onLoadProgressChanged: 
            console.log(webviewer.loadProgress)
        
    

在我放入的 .pro 文件中:

QT += webview

还有我的 main.cpp

QtWebView::initialize();

我的 console.log 正在正确打印加载状态,但在屏幕上我什么也没看到。 为什么?

【问题讨论】:

刚刚添加仅供参考,在 Ubuntu 上测试,工作正常。 Qt 5.6.2 64 位。 我不能使用 QT 5.6...在 ios 11 和 qt 5.9 上没有解决方案? 能否将“import QtWebView 1.0”更改为 1.1,如果这不起作用。我不确定还有什么。由于您使用的是 Qt 5.9 并且特定于 ios 11,因此您可以以 Qt 形式发布相同的内容可能会给出最佳答案。 我已经在使用 1.1 库,也许在 ios11 苹果已经关闭了外部 webview 的可能性? 【参考方案1】:

适用于iOS,解决方法是:

在 Xcode 中从 build 文件夹打开项目,并设置 App Transport Security Settings,您必须添加 Allow Arbitrary Loads 并将其设置为 YES。 现在 WebView 可以工作了。

【讨论】:

【参考方案2】:

initialize() 创建 opengl 表面,在这种情况下,您必须先打开父窗口(要显示的表面),其他解决方案是注释 initialize() - 页面将显示。如果您决定在 GL 表面上显示它,请尝试设置 ALWAYSSTACKONTOP 属性以查看,如果其他窗口不覆盖 webview,则首先呈现 opengl,因此任何其他背景都可以使其不可见。您也可以打开其他可见窗口的父级 webview 类,但如果您将其全屏显示,它会闪烁一段时间

【讨论】:

以上是关于WebView qml 在 iOS 11 上无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Webview 在 Windows 上的 mingw 中无法在 Qt Creator 中工作

QML Webview 使用 x-offset 呈现 SELECT 元素

QML WebView相机权限

Windows 上 Webview 的 Qt QML 后备组件

QML 文本滚动

无法在 iOS Appium 测试(AWS Device Farm)上切换到 WebView 上下文