WKWebView 中有一个社交链接按钮。当我单击按钮时,什么也没有发生。
您能告诉我如何通过单击按钮打开链接吗?
谢谢。
答案 0 :(得分:2)
您要打开的链接更改为“ facebook”,“ twitter”,还可以添加更多链接
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
if let url = navigationAction.request.url ,UIApplication.shared.canOpenURL(url) {
// let urlString = try! String(contentsOf: url)
if (url.absoluteString.range(of: "facebook.com") != nil || url.absoluteString.range(of: "twitter.com") != nil){
//UIApplication.shared.open(url)
print("Redirected to browser. No need to open it locally")
decisionHandler(.cancel)
}else{
print("Open it locally")
decisionHandler(.allow)
}
}
答案 1 :(得分:1)
您需要一个点击监听器。
您可以使用WKWebView在应用程序中显示交互式Web内容。显示HTML标记,样式化文本内容或完整网页的理想选择。之后,您需要处理您要拨打的“社交”按钮,并提交提交的数据(如果有的话...)
使用WKNavigationDelegate响应WKWebView事件
WKWebView Web视图具有两个主要的委托协议和属性:
在这两个委托协议中,WKNavigationDelegate可能是最常用的。因此,让我们来探讨一些页面导航事件!我们将通过以下委托函数来实现:
webView(_:didStartProvisionalNavigation:)
webView(_:didCommit:)
webView(_:didFinish:)
webView(_:didFail:withError:)
webView(_:didFailProvisionalNavigation:withError:)
首先,让我们采用协议并设置webView委托。方法如下:
将WKNavigationDelegate协议添加到视图控制器的类声明中,例如:class WebViewController: UIViewController, WKNavigationDelegate
在加载Web请求之前将webView的navigationDelegate属性设置为self,例如:webView?.navigationDelegate = self
接下来,实现前面所述的五个委托函数。将其函数体设置为print(#function),这样我们就可以看到函数的调用顺序。
赞:
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
{
print(#function)
}