2012-06-07 63 views
1

我有一個UIWebview,它加載了一個特定的網站部分(新聞)。我想阻止用戶訪問網站的其他部分,這意味着他們應該只留在新聞部分/閱讀PDF文章。iOS UIWebView - 限制HTML路徑

我已經構建了一組代碼,但由於某些技術限制,可悲的是無法對它們進行測試。下週只能訪問它。不過,我認爲現在是時候在這裏問一下,讓高級用戶查看我的草案代碼,看看它是否可行。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *urlAddress = @"http://www.imc.jhmi.edu/news.html"; 
    NSURL *url =[NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:requestObj]; 

    //finding current url and lead it back if it strayed off 
    NSString *currentURL = webView.request.URL.absoluteString; 
    NSRange range1 = [currentURL rangeOfString:@"news"]; 
    NSRange range2 = [currentURL rangeOfString:@"pdf"]; 

我應該使用

if (range1.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    [webView reload]; 
    }else if (range2.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    [webView reload]; 
    } 

} 

還是這一套代碼?

if (range1.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    url = [NSURL URLWithString:currentURL 
    [webView loadRequest:[NSURLRequest requestWithURL:url]]; 
    }else if (range2.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    url = [NSURL URLWithString:currentURL 
    [webView loadRequest:[NSURLRequest requestWithURL:url]]; 
    } 

並且有沒有代碼的問題?如果是的話,請指出爲什麼它不起作用,因爲我還處於學習階段。在這個階段將是一個學習更多的好機會。我正在尋找的邏輯是它會加載最初的新聞部分。 UIWebView應該只顯示那裏的新聞部分/ PDF文章。如果用戶嘗試去其他路徑,它應該檢測當前的URL並將它們重定向回新聞部分。

回答

4

要限制某些網址的負荷做以下

webView.delegate = self; 

,並添加以下功能

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = [[request URL]absoluteString]; 
    if(ulrString == @"restricted ur") 
      return NO; //Restrict 
    else 
      return YES; //Allow 
} 
+0

嗯,我得到了自己代表的一部分。但是第二部分,我可以反轉它,幷包括NSRange?如果它包含urlstring中的news或pdf,則返回YES以允許,那麼其他所有內容都將返回NO // restrict。因爲即時消息限制除了新聞部分/文章加載的一切。希望我說的是有道理的 –

+0

是的,當然你可以做到這一點,我做了很多次,它的工作 –

+0

當然:)我會試試它最新的星期一,讓我的工作站。順便說一句,如果我使用你的功能,我可以刪除我的代碼集,只包括第一部分? –