1

我有一个 UIWebview,它正在加载特定的网站部分(新闻)。我想阻止用户访问网站的其他部分,这意味着他们应该只留在新闻部分/阅读 pdf 文章。

我已经构建了一组代码,但遗憾的是,由于一些技术限制,目前还无法对其进行测试。只能在下周访问它。但是,我认为现在是在这里提问并让高级用户查看我的草稿代码并查看其是否可行的好时机。

- (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

1 回答 1

4

要限制某些 url 的负载,请执行以下操作

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
}
于 2012-06-07T11:03:15.417 回答