2014-11-06 3 views
0

하나의 HTML 페이지를로드하는 웹보기가 하나 있습니다. 처음에는 각 페이지에 색인과 같은 링크가있는 문서를 가지고 있습니다.웹보기가 링크를 클릭 할 때 shouldStartLoadWithRequest를 호출하지 않습니다.

요구 사항 : 웹보기 콘텐츠 URL을 클릭하면 기본 사파리 응용 프로그램 즉 앱 외부에서 해당 링크를 엽니 다.

내 문제 : 콘텐츠 링크를 클릭하면 링크가 하이퍼 링크로 감지되어 사파리 브라우저 외부에서 열립니다. 홈 버튼을 두 번 클릭 -> 내 앱 선택 -> 같은 링크를 다시 클릭하면 앱 브라우저에 콘텐츠가 표시됩니다. 즉, 콘텐츠로 스크롤됩니다. shouldStartLoadWithRequest 대리자 메서드를 사용하고 있지만 두 번째 시나리오에서는 호출되지 않습니다.

내 질문 : 어떻게 둘 다 얻을 수 있습니까? 일부 URL을 클릭하면 외부 앱에서 열립니다. 위의 경우에는 페이지 내용을 표시하기 위해 아래로 스크롤해야합니다. 아래

샘플 코드 :

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    switch (navigationType) { 

     case UIWebViewNavigationTypeFormSubmitted: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeBackForward: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeReload: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeFormResubmitted: 
      // request was caused by an image that's being loaded 
      break; 
     case UIWebViewNavigationTypeLinkClicked: { 

      // user clicked on link 
      [[UIApplication sharedApplication] openURL:request.URL]; 

      return NO; 
     } 
     case UIWebViewNavigationTypeOther: 
      // request was caused by an image that's being loaded 
      break; 
    } 

    return YES; 
} 

어떤 도움?

+0

질문을 삭제하십시오. – gran33

+0

UIWebView의 대리자가 설정되어 있습니까? – Amandir

+0

+1에서 @ gran33. 영어 실력을 향상 시키십시오. – kelin

답변

0

사파리로 리디렉션 한 후 shouldStartLoadWithRequest 방법에서 예 (YES)를 반환하는 것이 문제입니다. 원하는 동작을 얻으려면 첫 번째 경우에 NO를 반환하고 사용자가 다시 앱으로 돌아가서 링크를 두 번 클릭하면 YES를 반환해야합니다. 그건 WebView 로딩 요청 때문입니다.