如何通过单击WKWebView中的按钮来打开社交链接

时间:2019-03-22 12:40:18

标签: ios swift wkwebview

WKWebView 中有一个社交链接按钮。当我单击按钮时,什么也没有发生。

您能告诉我如何通过单击按钮打开链接吗?

谢谢。

2 个答案:

答案 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的
  • navigationDelegate,它响应 导航事件
  • 类型为WKUIDelegate的
  • uiDelegate,它响应用户 互动事件

在这两个委托协议中,WKNavigationDelegate可能是最常用的。因此,让我们来探讨一些页面导航事件!我们将通过以下委托函数来实现:

webView(_:didStartProvisionalNavigation:)
webView(_:didCommit:)
webView(_:didFinish:)
webView(_:didFail:withError:)
webView(_:didFailProvisionalNavigation:withError:)

首先,让我们采用协议并设置webView委托。方法如下:

  1. 将WKNavigationDelegate协议添加到视图控制器的类声明中,例如:class WebViewController: UIViewController, WKNavigationDelegate

  2. 在加载Web请求之前将webView的navigationDelegate属性设置为self,例如:webView?.navigationDelegate = self

接下来,实现前面所述的五个委托函数。将其函数体设置为print(#function),这样我们就可以看到函数的调用顺序。

赞:

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
{
    print(#function)
}