0

私のアプリには、WebViewとWebView2、webAdressとwebAdress2という2つのUIWebViewと2つのアドレスバーがあります。WebViewからURLを取得してwebAdressに配置し、WebView2からURLを取得してwebAdress2に配置する必要があります。

このコードを使用すると、URLの更新は最初のwebAdressにのみ表示され、WebView2apperasからのURLも最初のwebAdressに表示されます。さらに、WebView2のすべてのページがWebViewにロードされ始めます。

    - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
        //CAPTURE USER LINK-CLICK.
        if (navigationType == UIWebViewNavigationTypeLinkClicked) {
            NSURL *URL = [request URL]; 
            if ([[URL scheme] isEqualToString:@"http"]) {
                [webAdress setText:[URL absoluteString]];
                [self gotoAddress:nil];
            }    
            return NO;
        }   
        return YES;   
    }

- (BOOL)webView2:(UIWebView*)webView2 shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
        //CAPTURE USER LINK-CLICK.
        if (navigationType == UIWebViewNavigationTypeLinkClicked) {
            NSURL *URL = [request URL]; 
            if ([[URL scheme] isEqualToString:@"http"]) {
                [webAdress2 setText:[URL absoluteString]];
                [self gotoAddress2:nil];
            }    
            return NO;
        }   
        return YES;   
    }
4

1 に答える 1

2

デリゲート メソッドが 1 つだけ必要だと思います。このデリゲート メソッドをトリガーした WebView を確認し、これに応じてアクションを実行します。

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
        //CAPTURE USER LINK-CLICK.
        if (navigationType == UIWebViewNavigationTypeLinkClicked) {
            NSURL *URL = [request URL]; 
            if ([[URL scheme] isEqualToString:@"http"]) {
                if (webView == webView1)
                     [webAdress setText:[URL absoluteString]];
                if (webView == webView2)
                     [webAdress2 setText:[URL absoluteString]];
                [self gotoAddress2:nil];
            }    
            return NO;
        }   
        return YES;   
    }

すべての Web ビューのデリゲートを self として設定するだけで、このメソッドですべてのアクションを処理できます。

于 2011-12-01T16:04:15.527 に答える