我正在尝试做一个UIWebView
,但不允许用户访问给定 URL 的其他部分。像他们只能去我允许他们去的特定页面,而不是其他页面。
我不太确定- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
方法,所以我可能在那里犯了错误。现在的问题是,如果我启用此方法,我会加载到webpage
但无法浏览。甚至我允许的部分也不行。
我想知道 1)我是否遗漏了任何重要的代码?, 2)我是否遗漏了代码中的任何内容,或者为什么我的代码有误?
我是 Xcode 的新手,所以我需要你们可以给/教给我的所有指导。下面是我来自视图控制器的代码。
EDIT1:Xcode 是否有任何预构建的方法,或者我是否必须创建自己的方法,这样当他们浏览时UIWebView
,当他们点击另一个链接时,如果它不是我指定的,请求被拒绝?是否可以创建一种方法,使其不断检查绝对 url,如果它更改为我指定的其他内容,它将返回到我指定的 url?
在我的.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIWebViewDelegate>
{
IBOutlet UIWebView *webView;
}
@property (nonatomic, retain) UIWebView *webView;
@end
在我的.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize webView;
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *currentURL = [[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];
return YES;
}else if (range2.location ==NSNotFound){
currentURL = @"http://www.imc.jhmi.edu/news.html";
[webView reload];
return YES;
}
return NO;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
webView.scalesPageToFit=YES;
webView.delegate = self;
NSString *urlAddress = @"http://www.imc.jhmi.edu/news.html";
NSURL *url =[NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
}