当我浏览应用程序中的某些链接(在 UIWebView 中)时,它会打开安装在我的设备中的该链接的应用程序。我如何限制它打开外部应用程序并在我的 UIWebView 中加载相同的 URL。
也许有人会发现它有用:
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == .linkClicked, let req = request.urlRequest {
webView.loadRequest(req)
return false
}
return true
}
因此,我阻止在侧应用程序(例如 YouTube 应用程序)中打开链接,但在 UIWebView 中打开它。
您可以在 UIWebViewDelegate 中使用
func webView(UIWebView, shouldStartLoadWith: URLRequest, navigationType: UIWebViewNavigationType)
来做到这一点。例如:
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let urlString = request.url?.absoluteString ?? ""
if urlString == <your app link on webview> {
return false
}
return true
}
您现在只需将
<your app link on webview>
替换为您不希望 Web 视图导航到的实际链接
如果您使用 WKWebView,UIWebView 已弃用,您可以这样做:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
if let url = navigationAction.request.url {
webView.load(URLRequest(url: url))
decisionHandler(.cancel)
return
}
}
decisionHandler(.allow)
}