【问题标题】:WKWebview popup for PDF close button?PDF关闭按钮的WKWebview弹出窗口?
【发布时间】:2021-01-11 17:30:11
【问题描述】:

我的应用程序正在运行 WKWebview 以显示网站。当一个元素被点击时,它会调用window.open(),它会被捕获并根据链接显示一个PDF:

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    popupWebView = WKWebView(frame: view.bounds, configuration: configuration)
    popupWebView!.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    popupWebView!.navigationDelegate = self
    popupWebView!.uiDelegate = self
    popupWebView!.allowsBackForwardNavigationGestures = true
    
    view.addSubview(popupWebView!)
    return popupWebView!
}

就我而言,它工作得很好。

我的问题是现在我无法返回,因为 PDF 是全屏打开的。是否可以在这种弹出式 webview 中启用导航控件?或者有什么方法可以通过“后退”滑动来控制后退行为?我尝试通过allowsBackForwardNavigationGestures 进行操作,但它似乎不起作用...

【问题讨论】:

    标签: ios swift wkwebview


    【解决方案1】:

    我不认为WKWebView 有添加后退按钮的简单方法,您需要在视图(或导航控制器)上添加后退按钮。我已经能够这样做了:

    观察 webView 实例的canGoBack 属性更改,以便像这样启用/禁用(或隐藏/显示)后退按钮:

    popupWebView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoBack), options: .new, context: nil)
    

    在视图控制器上:

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "canGoBack" {
            if webView.canGoBack {
                // enable the back button
            } else {
                // disable the back button
            }
        }
    }
    

    最后,当用户点击返回按钮时,只需要调用:

    popupWebView.goBack()
    

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2011-04-14
      相关资源
      最近更新 更多