1

を実行しようとしていますUIWebViewが、ユーザーが指定された URL の他の部分にアクセスすることを許可していません。彼らは、私が許可した特定のページにしか行けず、他のページには行けないようなものです。

やり方がよくわからない- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationTypeので、間違っているかもしれません。問題は、このメソッドを有効にすると、ロードされますwebpageが、ブラウズできないことです。私が許可するセクションでさえありません。

1) 重要なコードが抜けていませんか? 2) コードに抜けているものはありますか? それともコードが間違っているのはなぜですか?

Xcodeは初めてなので、皆さんが私に与えたり教えたりできるすべてのガイダンスが必要です。以下は、View Controller からの私のコードです。

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];

}
4

1 に答える 1

3

このデリゲート メソッドwebView:shouldStartLoadWithRequest:navigationType : は、Web ビューがフレームのロードを開始する前に送信されます。Web ビューがコンテンツの読み込みを開始する必要がある場合は、値 YES を返します。そうでなければ、いいえ。

range1 と range2 の currentURL が見つからない場合、メソッドは NO を返します。

于 2012-06-26T10:05:36.413 に答える