2011-12-01 7 views
0

내 앱에는 WebView와 WebView2, webAdress 및 webAdress2라는 2 개의 UIWebView와 2 개의 Adress Bar tat가 있습니다. WebView에서 URL을 가져와 webAdress 및 WebView2에 넣고 webAdress2에 넣어야합니다.2 uiwebview의 URL을 가져 와서 자신의 주소 표시 줄에 넣으십시오

이 코드를 사용하면 첫 번째 webAdress에만 URL 업데이트가 표시되고, 첫 번째 webAdress의 WebView2 apperas에서도 URL이 업데이트됩니다. 또한 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; 
    } 

가 그냥 자기와 같은 모든 웹 뷰 위임 설정하고, 모두가이 방법에 모든 작업을 처리 할 수있는이 위임 방법을 촉발시킨 웹뷰 확인하고 수행 행동이에 따라 달라집니다.

+0

WebView, WebView2, webAdress, webAdress2에 대한 위임에 아웃렛을 배치했습니다. – nik1004

+0

그리고 코드를 사용하려고하면 xcode에서 오류가 발생합니다. 이 줄에서 if (webView == webView1) 2 오류 : 'webView'의 로컬 선언이 인스턴스 변수를 숨기고 선언되지 않은 식별자 'webView1'을 사용합니다. 그리고이 줄에서 (webView == webView2) 'webView' 인스턴스 변수 – nik1004

+1

을 숨 깁니다. 제공된 메서드에서 인수의 이름을 다른 이름으로 바꿉니다. 'webView' 이외의 것. –

관련 문제