반응형
WKWebView에서 Javascript Alert 띄우기
WKWebView를 사용할때 웹에서 호출하는 Javascrip의 alert을 처리할때는 다음과 같이 하면 된다.
WKUIDelegate
을 설정해주고,
wkWebView.uiDelegate = self
WKUIDelegate
의 webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Swift.Void)
함수에서 처리해주면 된다.
extension ViewController: WKUIDelegate {
func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Swift.Void) {
let alertController = UIAlertController(title: message, message: nil, preferredStyle: .alert);
let cancelAction = UIAlertAction(title: "확인", style: .cancel) {
_ in completionHandler()
}
alertController.addAction(cancelAction)
DispatchQueue.main.async {
self.present(alertController, animated: true, completion: nil)
}
}
}
단순히 alert만 띄우는게 아니라 확인
, 취소
를 처리할때에는 webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void)
함수에서 처리해 주면 된다.
extension ViewController: WKUIDelegate {
func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
let alertController = UIAlertController(title: message, message: nil, preferredStyle: .alert);
let cancelAction = UIAlertAction(title: "취소", style: .cancel) {
_ in completionHandler(false)
}
let okAction = UIAlertAction(title: "확인", style: .default) {
_ in completionHandler(true)
}
alertController.addAction(cancelAction)
alertController.addAction(okAction)
DispatchQueue.main.async {
self.present(alertController, animated: true, completion: nil)
}
}
}
반응형
'iOS > Tip' 카테고리의 다른 글
기본 iOS 보안: 키체인과 해싱 (Basic iOS Security: Keychain and Hashing) (0) | 2018.03.09 |
---|---|
iOS앱을 iPhone X 화면 크기에 적용하는 방법(How iOS Apps Adapt to the iPhone X Screen Size) (0) | 2017.11.04 |
iPhone X에 대한 개발 튜토리얼(Development Tutorial. for iPhone X) (0) | 2017.11.02 |
iOS 개발자도 잘 모르는 가장 일반적인 실수 10가지(The 10 Most Common Mistackes iOS Developers Don’t know They’re Making) (0) | 2017.06.27 |
수행 시간 측정 (0) | 2017.03.10 |
바코드 생성하기 (Code128, QRCode) (0) | 2017.02.24 |
SwipeGesture를 ScrollView와 함께 사용하기 (0) | 2017.01.31 |
EUC-KR / CP949 문자열 처리 하기 (0) | 2017.01.20 |