0

WebView を持つアプリを作成しています。ユーザーがリンクまたは webview のボタンをクリックすると、新しい URL を取得し、新しい URL を編集できるようにしたいと考えています。

shouldStartLoadWithRequest はトリックを実行する必要がありますが、リンクをクリックしてもそのメソッドが呼び出されることはありません。これが機能しない理由がわかりません。

この行を追加する必要があることをどこかで読みました:

webView.delegate = (id)self;

私はそれを試しましたが、それでも同じ問題が発生します。助けてください

AppDelegate.m

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *currentURL = [[request URL] absoluteString] ;

    NSLog(@"Url: %@", currentURL);
    return YES;
}

Controller.m

- (void)viewDidLoad
{
    webView.delegate = (id)self;
    NSString *tokenString = @"123";
    [super viewDidLoad];

    NSString *fullURL = [[NSString alloc] initWithFormat:@"http://192.168.1.69:8888/webapp/test.php?uid=%@", tokenString];
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
}
4

2 に答える 2

1

Controllerインスタンスが自身をデリゲートとして追加すると、インスタンスに追加するメソッドがAppDelegate呼び出されることはありません。

shouldStartLoadWithRequestメソッドをControllerクラスに移動します。

于 2013-07-04T19:31:24.390 に答える
0

ビュー コントローラーを Web ビューのデリゲートとして設定しました。しかし、代わりにアプリケーションのデリゲートに UIWebView デリゲート メソッドを実装しました。

そのデリゲート メソッドをビュー コントローラーに実装してみてください。ビュー コントローラーは、Web ビューのデリゲートです。

于 2013-07-04T19:34:03.540 に答える