我試圖做一個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];
}
看來你的代碼進入了無限循環。刪除[webView reload];從if條件並嘗試。 – san