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

How to open all links, besides some, in Safari with 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

您可以存储允许的 URL 列表并过滤请求的主机名 URL。如果主机匹配允许的 URL 之一,则 return true 允许 URL 在 web 视图中加载。否则使用 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
}