블로그

[IOS] 웹뷰의 자바스크립트 confirm 팝업 수정

IOS 에서 UIWebView 사용시 웹 페이지의 alert 창의 제목을 없애거나 기타 수정하는 방법입니다.

웹뷰가 포함된 클래스의 .h 파일에 아래를 추가합니다.

@interface UIWebView (Javascript)
- (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id *)frame;
@end

웹뷰가 포함된 클래스의 .m 파일에 아래를 추가합니다.

    - (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id *)frame {

        clicked = FALSE;

        UIAlertView *confirmDiag = [[UIAlertView alloc] initWithTitle:nil message:message delegate:self cancelButtonTitle:NSLocalizedString(@"예", @"예") otherButtonTitles:NSLocalizedString(@"아니오", @"아니오"), nil];

        [confirmDiag show];

        while (clicked == FALSE) {
            [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01f]];
        }

        return diagStat;
    }
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
        NSLog(@"clickedButtonAtIndex");
        clicked = TRUE;
        if (buttonIndex == 0){
            diagStat = YES;
        } else if (buttonIndex == 1) {
            diagStat = NO;
        }
    }
@end

위에서 initWithTitle 을 nil 로 했으므로 제목은 나오지 않습니다. 옵션을 조절해서 버튼 텍스트 등을 수정할 수 있습니다.

delegate 를 self 로 지정하면 클릭시 clickedButtonAtIndex 메소드가 호출된다.

2017-06-05 목록