如何在Safari中使用UIWebView打开除了一些链接之外的所有链接?

时间:2016-07-10 12:11:07

标签: ios swift uiwebview

我从here获取了以下代码,以打开与Safari中的域名不匹配的所有其他链接:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if navigationType == UIWebViewNavigationType.LinkClicked {
        UIApplication.sharedApplication().openURL(request.URL!)
        return false
    }
    return true
}

虽然如何在我的UIWebView而不是Safari中允许其他指定的域名打开,例如paypal.com

1 个答案:

答案 0 :(得分:3)

您可以存储允许的URL列表,并过滤请求URL的主机名。如果主机与其中一个允许的URL匹配,则返回true以允许在Web视图中加载URL。否则,使用UIApplication.openURL()在Safari中打开URL。

例如:

let safeList = [ "paypal.com", "google.com" ]

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    if navigationType == UIWebViewNavigationType.LinkClicked {

        if let host = request.URL?.host where safeList.contains(host) {
            return true // Open in web view
        }

        UIApplication.sharedApplication().openURL(request.URL!)
        return false
    }

    return true
}