scrollView 확대/축소


scrollView 확대/축소 1

웹뷰에서 pdf의 경우 줌 기능이 필요해서 다음과 같이 정리했습니다.

컴포넌트별로 이벤트를 제어할 수 있는 방법이 있을 것 같아서 레퍼런스를 찾아봤지만 찾을 수가 없었습니다…

뭔가 마음에 안들지만 해보자!
일정이 있어요!

화면 확대를 제어하는 ​​변수 선언

확대/축소를 전역적으로 제어할 수 있는 변수를 선언합니다.

class MainViewController: BaseViewController {
    // 화면 확대를 제어할 변수 선언
    var isPinchGestureRecognizer = false
}

호출된 작업에 따라 줌 플래시 업데이트

PDF URL 경로를 사용하여 WKWebView 유형으로 선언된 wkWindowFull 변수를 로드합니다.

// 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))
            
            // 확대/축소...
            self.isPinchGestureRecognizer = true
        ...
    }
}

scrollViewWillBeginZooming.pinchGestureRecognizer 설정

extension MainViewController: UIScrollViewDelegate {
    ...
    // 스크롤 뷰 확대 / 축소 시작 예정 알림
    func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
        // pinchGestureRecognizer : 핀치 제스처를 제어하기 위한 제스처 인스턴스
        // scrollView.pinchGestureRecognizer?.isEnabled = false
        scrollView.pinchGestureRecognizer?.isEnabled = self.isPinchGestureRecognizer
    }
    ...
}

인터넷에서 전화

ios 브리지를 통해 windowFullPDF라는 작업으로 ios에 처리를 요청합니다.

const message = {
     action: 'windowFullPDF',
     params: {url: 'https://xxxxxx'}
};
window.webkit.messageHandlers.IosBridge.postMessage(message);

기본 사항을 확인했으니 나머지는 상황에 맞게 요리해 봅시다!

크크크크크크크!
!