我们可以限制某些网站在网络视图中打开

时间:2012-10-23 08:06:35

标签: iphone ios uiwebview

我希望在我的应用中不要在网络视图中打开某些特定网站。那么我们可以用这种方式限制任何网站。我想添加一件我想要完全限制网站而不是任何特定页面的东西。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

是的,您可以在此UIWebview委托方法中阻止加载页面。 请记住将该类设置为webviews委托。 webView.delegate = self;,该类必须为UIViewController <UIWebViewDelegate>

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.absoluteString rangeOfString:@"google"].length != 0) {
        // maybe show a UIAlertView to indicate the page is blocked?
        return NO;  
    }else {
        return YES;
    }
}

编辑:现在它会检查网址中是否提及谷歌,如果它包含谷歌,则会阻止谷歌

答案 1 :(得分:0)

稍微改进一下:在NSArray中保存要阻止的网站:

NSArray *restrictedSites = [NSArray arrayWithObjects:@"http://www.google.com", @"http://www.google.co.uk", nil];

现在检查所请求的网站是否是受限制的网站之一:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *site = request.URL.absoluteString

    for(NSString *str in restrictedSites)
    {
        if ([site isEqualToString:str]) 
        {
            return NO;
        }
    }
    return YES;
}

或者,您可以检查所请求的网站是否包含URL。在下列情况下,将阻止包含“http://www.google”或“http://www.apple”的所有网址:

首先创建受限制的站点阵列:

NSArray *restrictedSites = [NSArray arrayWithObjects:@"http://www.google", @"http://www.apple", nil]; 

现在检查所请求的网站是否包含一个受限制的网站(没有.com或.co.uk等...):

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *site = request.URL.absoluteString

    for(NSString *str in restrictedSites)
    {
        if ([site rangeOfString:str].location != NSNotFound) 
        {
            return NO;
        }
    }
    return YES;
}

所以在这里,所有http://www.google.comhttp://www.google.frhttp://www.google.co.uk都将被屏蔽。