2012-10-23 88 views

回答

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; 
    } 
} 

編輯:現在它檢查是否谷歌是在URL中提到,並阻止它,如果它包含谷歌

+0

這隻會加載一個特定的網址,假設谷歌,www.gogle.com,它會被阻止,但google.i的其他網址的想要完全限制谷歌沒有一個特定的網頁。 –

+0

我已經更新了我的答案 – hakonbogen

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將被阻止。

相關問題