-
scrollView 확대/축소 방법Language/iOS,AOS 2023. 2. 24. 14:48
웹뷰에서 pdf 일 경우에는 확대/축소 기능이 필요하여 작업을 처리하다보니 아래와 같이 정리하게 되었다.
컴포넌트 별로 이벤트를 제어할 수 있는 방법이 있을거라고 생각하고 레퍼런스를 찾아보았지만 찾지 못했다...
뭔가 맘에 안들지만 일단 하자! 일정이 있으니깐!
화면 확대를 제어할 수 있는 변수 선언
전역으로 확대/축소를 제어할 수 있는 변수를 선언한다.
class MainViewController: BaseViewController { // 화면 확대를 제어할 변수 선언 var isPinchGestureRecognizer: Bool = false }
호출되는 Action에 따라서 확대/축소 플래스 갱신
WKWebView형으로 선언된 wkWindowFull 변수에 pdf URL 경로를 가지고 로드한다.
// MARK: - 웹 액션 - 정의 // WebAction을 구분하는데 사용되는 타입 enum WebAction: String { .... case windowFullPdf } extension MainViewController: WKScriptMessageHandler { func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { guard message.name == "IosBridge", let messages = message.body as? [String: Any], let action = messages["action"] as? String else { return } let webAction = WebAction(rawValue: action) switch webAction { ... case .windowFullPdf: guard let params = messages["params"] as? [String: String], let url = params["url"] as? String, let webUrl = URL(string: url) else { return } wKWindowFull?.load(URLRequest(url: webUrl)) // 확대 허용 (true) self.isPinchGestureRecognizer = true as Bool ... } }
scrollViewWillBeginZooming.pinchGestureRecognizer 설정
extension MainViewController: UIScrollViewDelegate { ... // 스크롤 뷰 확대 / 축소 시작 예정 알림 func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) { // pinchGestureRecognizer : 핀치 제스처를 제어하기 위한 제스처 인스턴스 // scrollView.pinchGestureRecognizer?.isEnabled = false scrollView.pinchGestureRecognizer?.isEnabled = self.isPinchGestureRecognizer } ... }
웹에서 호출
ios bridge를 통해서 ios에 windowFullPDF라는 action으로 처리 요청을 한다.
const message = { action: 'windowFullPDF', params: {url: 'https://xxxxxx'} }; window.webkit.messageHandlers.IosBridge.postMessage(message);
기본적인건 확인했으니 나머지 부분들은 상황에 맞게 요리해보자!
짝짝짝!!
'Language > iOS,AOS' 카테고리의 다른 글
iOS 푸시 랜딩 (active, inactive, background) (0) 2023.03.01 웹뷰 캐시 삭제 (0) 2023.03.01 페이스북 간편 로그인 (0) 2023.02.23 네이버 간편 로그인 연동 (0) 2023.02.21 카카오 간편 로그인 연동 (0) 2023.02.20