0

在我的应用程序中,我有 2 个 UIWebView 和 2 个地址栏,分别称为 WebView 和 WebView2、webAdress 和 webAdress2。我需要从 WebView 获取 url 并将其放入 webAdress,然后从 WebView2 将其放入 webAdress2。

当我使用此代码时,URL 更新仅出现在第一个 webAdress 中,来自 WebView2 的 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

我猜你只需要一个委托方法。检查哪个 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 回答