iOS/Swift
-
오류다른 ViewController에서 동시에 한 개의 webView를 사용하고 있던 중 아래 오류가 발생하였다.Completion handler passed to [webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once원인webView에서 decideHandler나 completionHandler의 호출은 한 번 밖에 되지 않는다.해결CompletionHandlerWrapper Class를 선언하여 webView에 적용class CompletionHandlerWrapper { private var completionHandler: ((Element) -> Void)? private let defaultVa..
[iOS/WebKit] Completion handler passed to [webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once 오류오류다른 ViewController에서 동시에 한 개의 webView를 사용하고 있던 중 아래 오류가 발생하였다.Completion handler passed to [webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once원인webView에서 decideHandler나 completionHandler의 호출은 한 번 밖에 되지 않는다.해결CompletionHandlerWrapper Class를 선언하여 webView에 적용class CompletionHandlerWrapper { private var completionHandler: ((Element) -> Void)? private let defaultVa..
2024.06.09 -
DispatchGroup : 하나의 단위로 모니터링할 수 있는 작업들의 그룹- 여러 작업을 그룹에 추가하고 동일한 Queue 또는 다른 Queue에서 실행되도록 예약할 수 있음- 그룹 내의 모든 작업이 실행 완료 후 completionHandler를 실행- 그룹의 모든 작업이 실행 완료할 때까지 동기적(sync)으로 기다릴 수 있음 // 그룹 생성let group = DispatchGroup()// main Queue를 group에 추가DispatchQueue.main.async(group: group){}// group의 작업이 완료되었을 때 main Queue에 알림group.notify(queue: DispatchQueue.main){} 참고 iOS Concurrency(동시성) 프로그래밍, 동기 ..
[Swift] DispatchQueue (3) - DispatchGroupDispatchGroup : 하나의 단위로 모니터링할 수 있는 작업들의 그룹- 여러 작업을 그룹에 추가하고 동일한 Queue 또는 다른 Queue에서 실행되도록 예약할 수 있음- 그룹 내의 모든 작업이 실행 완료 후 completionHandler를 실행- 그룹의 모든 작업이 실행 완료할 때까지 동기적(sync)으로 기다릴 수 있음 // 그룹 생성let group = DispatchGroup()// main Queue를 group에 추가DispatchQueue.main.async(group: group){}// group의 작업이 완료되었을 때 main Queue에 알림group.notify(queue: DispatchQueue.main){} 참고 iOS Concurrency(동시성) 프로그래밍, 동기 ..
2024.04.20 -
Swift에서 WKHTTPCookieStore를 사용하여 쿠키를 관리할 수 있다. WKHTTPCookieStore(Class) : 특정 웹뷰와 관련된 HTTP Cookie를 관리하는 개체 웹페이지의 초기 쿠키를 지정하고 웹 콘텐츠의 쿠키를 관리할 때 사용 예를 들어 사용자가 로그아웃을 할 때 현재 세션에 대한 쿠키를 WKHTTPCookieStore을 이용하여 쿠키를 삭제할 수 있음 쿠키 관리 // 저장된 모든 쿠키를 비동기로 가져와 지정된 completionHandler에 전달 func getAllCookies(([HTTPCookie]) -> Void){} // WKHTTPCookieStore에 쿠키를 추가 func setCookie(HTTPCookie, completionHandler: (() -> V..
[iOS] HTTP CookieSwift에서 WKHTTPCookieStore를 사용하여 쿠키를 관리할 수 있다. WKHTTPCookieStore(Class) : 특정 웹뷰와 관련된 HTTP Cookie를 관리하는 개체 웹페이지의 초기 쿠키를 지정하고 웹 콘텐츠의 쿠키를 관리할 때 사용 예를 들어 사용자가 로그아웃을 할 때 현재 세션에 대한 쿠키를 WKHTTPCookieStore을 이용하여 쿠키를 삭제할 수 있음 쿠키 관리 // 저장된 모든 쿠키를 비동기로 가져와 지정된 completionHandler에 전달 func getAllCookies(([HTTPCookie]) -> Void){} // WKHTTPCookieStore에 쿠키를 추가 func setCookie(HTTPCookie, completionHandler: (() -> V..
2024.03.24 -
WKScriptMessageHandler(Protocol) 웹페이지에서 실행되는 JavaScript 코드로부터 메시지를 수신하기 위한 인터페이스 웹 뷰 안에서 JavaScript message를 앱에서 응답하는 방법 특히 MessageHandler를 타겟으로 메시지를 전송하면 WebKit에서는 userContentController(_:didReceive:) 함수를 호출 JavaScript에서 MessageHandler를 호출하려면 아래 함수를 호출 window.webkit.messageHandlers..postMessage() WKMessageHandler에서 의 값을 지정 userContentController(_:didReceive:) 웹페이지가 script message를 전송했을 때 func u..
[iOS] WKScriptMessageHandlerWKScriptMessageHandler(Protocol) 웹페이지에서 실행되는 JavaScript 코드로부터 메시지를 수신하기 위한 인터페이스 웹 뷰 안에서 JavaScript message를 앱에서 응답하는 방법 특히 MessageHandler를 타겟으로 메시지를 전송하면 WebKit에서는 userContentController(_:didReceive:) 함수를 호출 JavaScript에서 MessageHandler를 호출하려면 아래 함수를 호출 window.webkit.messageHandlers..postMessage() WKMessageHandler에서 의 값을 지정 userContentController(_:didReceive:) 웹페이지가 script message를 전송했을 때 func u..
2024.03.16 -
WKUIDelegate(Protocol) : 웹페이지를 대신하여 기본 UI 요소를 표시하는 방법 새 창이 열리는 것을 제어 사용자가 요소를 클릭했을 때 표시되는 기본 메뉴 Item의 동작을 강화 기타 UI 관련 작업 수행 JavaScript 또는 기타 플러그인 콘텐츠를 처리하는 결과로 호출 WKUIDelegate | Apple Developer Documentation The methods for presenting native user interface elements on behalf of a webpage. developer.apple.com webView(_:createWebViewWith:for:windowFeatures:) 새로운 웹뷰를 생성 webView(_:createWebViewWith:..
[iOS] WKUIDelegateWKUIDelegate(Protocol) : 웹페이지를 대신하여 기본 UI 요소를 표시하는 방법 새 창이 열리는 것을 제어 사용자가 요소를 클릭했을 때 표시되는 기본 메뉴 Item의 동작을 강화 기타 UI 관련 작업 수행 JavaScript 또는 기타 플러그인 콘텐츠를 처리하는 결과로 호출 WKUIDelegate | Apple Developer Documentation The methods for presenting native user interface elements on behalf of a webpage. developer.apple.com webView(_:createWebViewWith:for:windowFeatures:) 새로운 웹뷰를 생성 webView(_:createWebViewWith:..
2024.03.16 -
WKNavigationDelgate 웹뷰의 탐색(navigation) 변경사항을 수락 또는 거부하고 탐색 요청 진행 상황을 추적하는 방법 WKNavigationDelegate | Apple Developer Documentation Methods for accepting or rejecting navigation changes, and for tracking the progress of navigation requests. developer.apple.com webView(_:decidePolicyFor:preferences:decisionHandler:) 웹 페이지의 탐색 허용 여부를 결정할 때 webView(_:decidePolicyFor:preferences:decisionHandler:) | Ap..
[iOS] WKNavigationDelegateWKNavigationDelgate 웹뷰의 탐색(navigation) 변경사항을 수락 또는 거부하고 탐색 요청 진행 상황을 추적하는 방법 WKNavigationDelegate | Apple Developer Documentation Methods for accepting or rejecting navigation changes, and for tracking the progress of navigation requests. developer.apple.com webView(_:decidePolicyFor:preferences:decisionHandler:) 웹 페이지의 탐색 허용 여부를 결정할 때 webView(_:decidePolicyFor:preferences:decisionHandler:) | Ap..
2024.03.16