获取 2 个 uiwebview 的 url 并将其放入各自的地址栏

发布于 12-19 04:22 字数 1365 浏览 5 评论 0原文

在我的应用程序中,我有 2 个 UIWebView 和 2 个地址栏,分别称为 WebView 和 WebView2、webAdress 和 webAdress2。我需要从 WebView 获取 url 并将其放入 webAdress,并从 WebView2 获取 url 并将其放入 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;   
    }

In my app I have 2 UIWebView's and 2 Adress Bar tat called WebView and WebView2, webAdress and webAdress2. I need to get url from WebView and put it to webAdress, and from WebView2 and put it to webAdress2.

When I use this code, the URL updates appears only in first webAdress, url from WebView2 apperas in first webAdress too. Moreover, all pages from WebView2 starts to be load in 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;   
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后知后觉2024-12-26 04:22:55

我猜您只需要一种委托方法。检查哪个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,您就可以处理此方法中的所有操作。

I guess you are in need of only one delegate method. Check which webview has triggered this delegate method and perform actions depend on this:

- (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;   
    }

Just set for all web views delegate as self, and all you can handle all actions in this method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文