2011-12-01 25 views
0

在我的應用程序中,我有2個UIWebView和2個地址欄,分別稱爲WebView和WebView2,webAdress和webAdress2。我需要從WebView獲取url並將其放到webAdress中,然後從WebView2中將它放到webAdress2中。獲取2個uiwebview的url並放到他們自己的地址欄

當我使用此代碼時,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; 
    } 

回答

2

我猜你是隻需要一個委託方法。檢查該網頁流量已經引發此委託方法和執行的操作取決於此:

- (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視圖代表自我只需設置,以及所有你可以處理在這個方法中的所有操作。

+0

我把網點委託給WebView,WebView2,webAdress,webAdress2。 – nik1004

+0

當我嘗試使用你的代碼時,xcode給了我錯誤。在這一行if(webView == webView1)2錯誤:'webView'的本地聲明隱藏實例變量並使用未聲明的標識符'webView1' 並且在這一行if(webView == webView2)它表示'webView'隱藏實例變量 – nik1004

+1

然後,只需將提供給不同名稱的方法中的參數重命名即可。除了'webView'以外的東西。 –