UIWebView에서 링크 클릭시 Webview의 페이지 이동이 아닌 사파리 창을 띄우는 일이 생겼다..찾아보니 간단했다

-(BOOL)webView:(UIWebView *)descriptionTextView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
      if (UIWebViewNavigationTypeLinkClicked == navigationType) {
           [[UIApplication sharedApplication] openURL:[request URL]];
          
return NO;
     
}
     
return YES;
}

출처 : http://stackoverflow.com/questions/5330974/open-link-in-uiwebview-in-safari
  • 웹개발 2011.07.19 10:53

    안녕하세요. ^^ 질문이 있습니다.

    제가 모바일 웹개발을 했고, 다른 분이 앱 개발을 하셔서 제가 만든 웹을 웹뷰로 씌워서 보여주고 있습니다.

    근데 결제 버튼이 웹에 있습니다. 한마디로 웹뷰 안에 있는

    저의 작업물(웹)에서 웹뷰안에서 페이지 전환이 아닌 사파리를 띄워야한다는데요.


    말씀하신 것 처럼 웹뷰에서 사파리 새창을 띄워야하는데요.

    -(BOOL)webView:(UIWebView *)descriptionTextView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (UIWebViewNavigationTypeLinkClicked == navigationType) {
    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
    }
    return YES;
    }

    이 것이 웹에서 이뤄질수 있는 언어인가요?? ^^;

  • suroMind 2011.07.19 13:29 신고

    위 코드는 Objective-C 언어입니다.. 따라서 아이폰에 코딩을 해야하는 부분입니다.

    결제버튼클릭시 사파리창을 띄우셔야 한다고 했는데 위 코딩만으로는 부족할 듯 싶네요..
    제가 위 코드를 쓴거는 HTML이 링크가 하나밖에 없고 텍스트 몇줄이라서 쓴것 뿐이구요.

    위 코드를 쓴다면 HTML상의 모든 A 태그의 영향을 받거나 안될 수도..
    그러니 웹과 앱 간에 통신을 하셔서 특정값을 넘기셔서 해당 값이 맞을 때만 아래 코드를 실행시키세요

    [[UIApplication sharedApplication] openURL:[request URL]];

    결론적으로는 결제버튼을 누르면 값을 넘기고 위 함수에서 그 값을 비교해서
    결제 버튼이라면 사파리창을 띄우면 되겠지요