PDF 关闭按钮的 WKWebview 弹出窗口?
WKWebview popup for PDF close button?
我的应用 运行 WKWebview
用于显示网站。单击某个元素时,它会调用 window.open()
并根据 link 显示 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
进行操作,但它似乎不起作用...
我认为 WKWebView
没有简单的方法来添加后退按钮,您需要在视图(或导航控制器)上添加后退按钮。我已经能够这样做了:
观察 webView 实例的 canGoBack
属性 变化,以便 enable/disable (或 hide/show)后退按钮像这样:
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()
我的应用 运行 WKWebview
用于显示网站。单击某个元素时,它会调用 window.open()
并根据 link 显示 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
进行操作,但它似乎不起作用...
我认为 WKWebView
没有简单的方法来添加后退按钮,您需要在视图(或导航控制器)上添加后退按钮。我已经能够这样做了:
观察 webView 实例的 canGoBack
属性 变化,以便 enable/disable (或 hide/show)后退按钮像这样:
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()