2011. 12. 27. 10:31

[아이폰] 웹뷰에서 이벤트 가로채기

참고 : http://j2enty.tistory.com/86

웹에서 발생하는 이벤트를 어플 내에서 처리하려면 UIWebViewDelegate의 webView: shouldStartLoadWithRequest: navigationType: 메서드를 이용하면 된다.

간단한 예제

1. 웹뷰가 있는 View에 <UIWebViewDelegate> 프로토콜을 추가해주고, 인터페이스 빌더에서 delegate를 연결해준다.

2. 아래의 메서드를 구현해준다.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *requestStr = [[request URL] absoluteString];
   
    NSLog(@"%@", requestStr);
   
    if([requestStr isEqualToString:@"http://m.search.naver.com/search.naver?query=&where=m&sm=mtp_hty.idx"])
    {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"모바일 웹 전체서비스" message:@"테스트 중입니다." delegate:self cancelButtonTitle:@"확인" otherButtonTitles:nil, nil];
        [alertView show];
        [alertView release];
       
        return NO;
    }
   
    return YES;
}

3. 실행 후 네이버를 실행하여 검색 버튼을 누르면 팝업이 뜨는 것을 확인할 수 있다.