Lomohome.com :: 괴발자 모근원

iPhone 어플에서 UIWebView 를 사용한 프로그램에서
웹뷰안에서 JavaScript 의 Alert 를 호출 하면  (ex -> javascript:alert("test some strings.");)
다음과 같이 호스트 이름이 얼럿창의 상단에 찍히게 된다.

보안때문에 상단의 ip 는 지웠지만 만약 웹뷰에서 lomohome.com  에서 얼럿창을 띄웠다면  lomohome.com 이라는 문구가 얼럿창의 타이틀에 뜨게 된다.

이 얼럿창은 UIWebView 에 카테고리를 이용하여 딜리게이트 메소드를 구현해주면 수정할 수 있다.
먼저 UIWebView 의 헤더파일에 다음과 같은 인터페이스를 추가해준다.

//@Geunwon,Mo 2010.9.17 : UIWebView Javascript alert 위한 카테고리.

@interface UIWebView (JavaScriptAlert) 

- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;

@end


그리고 구현파일에 구현해준다.
 

//@Geunwon,Mo 2010.9.17 : UIWebView Javascript alert 위한 카테고리.

@implementation UIWebView (JavaScriptAlert)

- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {

NSLog(@"javascript alert : %@",message);

    UIAlertView* customAlert = [[UIAlertView alloc] initWithTitle:@"Hana Bank" message:message delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil];

    [customAlert show];

    [customAlert autorelease];

}

@end


 요렇게 구현하고 나면 다음과 같이 Title  에 원하는 문구로 자바스크립트 얼럿을 띄울 수 있다.



구현 메소드 중, 타이틀 인자를 nil 로 넣으면 아무것도 안찍힌다.

UIAlertView* customAlert = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil];




저작자 표시 비영리 변경 금지
신고
Posted by Geunwon Mo 모근원
  1. webkit.framework를 추가해야 사용이 가능한가요?

  2. 다시 해봐야겠네요~ 감사합니다. ^^

  3. 이것 안되는데요..
    관련 .H와 .M 파일 좀 보여줄수 있는지요..

  4. 탭바와 네비게이션바 그리고 웹뷰를 넣어서 현재 웹페이지를 가져오도록 해놓은 상태입니다.
    위 부분을 탭바에 추가된 콘트럴러의 헤더 부분과 구현을 했지만 작동이 안되는것 같습니다.
    프로젝트 생성시 window-base기반으로 생성하여 클래스파일을 탭갯수만큼 만들어서 구현한 상태입니다.
    뭐가 잘못된것일까요?

    • window-base 와는 상관이 없고 말씀하신대로 현재 뷰콘트롤러의 헤더부분에 추가로 정의해주시면 될텐데요.
      웹뷰 콘트롤러에 카테고리형식으로 추가가 되었는지 확인이 필요할것 같습니다.