【问题标题】:Inconsistent Behavior in WKNavigationDelegateWKNavigationDelegate 中的行为不一致
【发布时间】:2020-04-24 10:34:40
【问题描述】:

我正在开发一个主要由 WKWebView 组成的应用程序。 我使用 WKNavigationDelegate 协议监控它的导航状态。

我将 viewController 创建为 WKNavigationDelegate

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, UIGestureRecognizerDelegate {
...
override func viewDidLoad() {
    ...
    webView.navigationDelegate = self
    ...

我像这样在 webview 上加载请求:

let gotoUrl = ... as? String
if let url = URL(string: gotoUrl) {
    let request = URLRequest(url: url)
    webView.load(request)            
}

然后是委托方法:

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("Successfully loaded")
    }

    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        print("Did commit navigation")
    }

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        print("Start Provisional navigation")
    }

    func webViewWebContentProcessDidTerminate(_ webView:WKWebView) {
        print("request failed")
    }

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        print("request failed")
    }

    func webView(_ webView: WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error) {
        print("request failed")
    }

这适用于我的 webapps 初始网址:https://example.com/app/ 然后调用委托方法。

当应用程序从通知中打开时,我想将 web 视图定向到 web 应用程序的特定部分。 但是,当我加载加载 webapp 特定部分的 url 时: https://example.com/app/#/secure/content/alarm-base/alarm-list//alarm-detail/1381122 尽管 webview 成功加载了 url,但未调用委托方法。 如果我在启动时直接加载特定的 url,也会调用委托方法。 Web 应用程序是用 AngularJS 编写的。

我希望委托处理程序为我从代码加载的每个请求触发。 关于如何实现这一目标的任何想法?

【问题讨论】:

  • 看来您可以通过添加 ``` webView.load(request) webView.stopLoading() webView.reload() ``` 来强制执行此操作,这很笨重,有点用

标签: ios swift


【解决方案1】:

我不确定发生了什么,但是可以通过在执行请求时添加以下代码来强制它使用委托:

webView.load(request) 
webView.stopLoading() 
webView.reload()

它很笨重,但它为我解决了问题。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    相关资源
    最近更新 更多