2012-06-26 53 views
1

我試圖做一個UIWebView,但不允許用戶訪問給定URL的其他部分。就像他們只能去特定的頁面,我允許他們去,而不是其他人。iOS UIWebView限制

我不太確定- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType方法,所以我可能在那裏犯了一個錯誤。現在的問題是,如果啓用此方法,我將加載到webpage,但無法瀏覽。甚至沒有我允許的部分。

我想知道是否1)我是否遺漏了任何重要的代碼?2)我是否遺漏了代碼中的任何內容,或者爲什麼我的代碼錯誤?

我是Xcode的新手,所以我需要所有的指導,你們可以給我/教我。下面是我的視圖控制器的代碼。編輯1:Xcode是否有任何預先構建的方法,還是我必須創建我自己的方法,以便當他們瀏覽UIWebView,並且當他們點擊另一個鏈接時,如果它不是我指定的其他東西,請求被拒絕?是否有可能創建一個方法,以便它會不斷檢查絕對url,如果它改變爲別的東西,而不是我指定的,它會返回到我指定的url?

在my.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]; 

} 
+0

看來你的代碼進入了無限循環。刪除[webView reload];從if條件並嘗試。 – san

回答

2

此委託方法web視圖:shouldStartLoadWithRequest:navigationType:是web視圖開始加載的幀之前發送。並且它返回值是,如果Web視圖應該開始加載內容;否則,否。

當currentURL找不到範圍1和範圍2時,您的方法返回NO。

+0

啊!我現在知道了。非常感謝你。 Xcode有沒有預先構建的方法,還是我必須創建自己的方法,以便在我單擊web視圖中的url時發送方法,如果它不是我指定/允許的,它會重定向到我想要的url? –