【问题标题】:get urls of 2 uiwebview's and put to their own adress bar获取 2 个 uiwebview 的 url 并放到他们自己的地址栏
【发布时间】:2011-12-01 15:57:49
【问题描述】:

在我的应用程序中,我有 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;   
    }

【问题讨论】:

    标签: ios xcode uiwebview uiwebviewdelegate


    【解决方案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,您可以在此方法中处理所有操作。

    【讨论】:

    • 我将网点委托给 WebView、WebView2、webAdress、webAdress2。
    • 当我尝试使用你的代码时,xcode 给了我错误。在这一行 if (webView == webView1) 2 错误:'webView' 的本地声明隐藏实例变量和使用未声明的标识符'webView1' 在这一行如果 (webView == webView2) 它说本地声明'webView'隐藏实例变量
    • 然后只需将提供的方法中的参数重命名为不同的名称。 webView以外的东西。
    • 因为你没有 webView1)。重命名它。
    猜你喜欢
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多