2012-06-26 2 views
1

UIWebView을 수행하려고하지만 사용자가 주어진 URL의 다른 부분을 방문하도록 허용하지 않습니다. 그들이 내가 갈 수있게 해주는 특정 페이지 만 갈 수있는 것과 같은 것.iOS UIWebView 제한

나는 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 메서드에 대해 너무 확신하지 못하므로 실수했을 수 있습니다. 문제는 지금이 방법을 활성화하면 webpage에로드되지만 탐색 할 수 없다는 것입니다. 심지어 섹션을 허용하지 않습니다.

1) 중요한 코드가 누락 되었습니까? 2) 코드에 아무것도 표시되지 않았거나 코드가 잘못되었습니다.

Xcode에 익숙하지 않으므로 여러분이 줄 수있는 모든 지침이 필요합니다. 아래보기 컨트롤러에서 내 코드입니다.

EDIT1 : Xcode에서 사전 구축 된 메소드가 있습니까? 아니면 UIWebView을 탐색 할 때 다른 링크를 클릭 할 때와 같이 자신이 지정한 메소드가 있어야합니다. 요청이 거부됩니까? 절대 URL을 지속적으로 확인하고 내가 지정한 것 이외의 다른 것으로 변경되면 지정된 URL로 돌아갈 수있는 메서드를 만드는 것이 가능합니까? shouldStartLoadWithRequest : 내하는 .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

이 대리자 메서드 웹보기에서

#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIWebViewDelegate> { IBOutlet UIWebView *webView; } @property (nonatomic, retain) UIWebView *webView; @end 

my.h

에서

는 navigationType : 웹보기가 프레임을로드를 시작하기 전에 전송됩니다. 반환 값 웹보기에서 내용로드를 시작해야하는 경우 YES입니다. 그렇지 않으면 아니오.

range1 및 range2가있는 currentURL을 찾지 못하면 NO가 반환됩니다.

+0

아! 지금은 이해. 고마워요. Xcode에 의해 사전 작성된 메소드가 있습니까? 또는 웹 브라우저에서 URL을 클릭 할 때 메소드가 전송되도록 자신의 메소드를 만들어야합니까? 그렇지 않은 경우 원하는 URL로 리디렉션됩니까? –