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

3

我从这里获取了下面的代码,用于在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个回答

3
您可以存储允许访问的URL列表,并根据请求URL的主机名过滤。如果主机名匹配其中一个允许的URL,则返回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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接