개발

Swift iOS WKWebView : 3D Touch 비활성화 시키기 (코드 부분)

소소ing 2020. 9. 22. 18:03
반응형

iOS WKWebView 에서 PreView에 해당되는 3D Touch를 비활성화해 봅시다.

 

해당 글에서 코드 부분은 파란색으로 표기 됩니다.

해당 글에서 중요 부분은 붉은색으로 표기 됩니다.

 

1. "Swift iOS WKWebView : 기본 연동 (코드 부분)" 코드를 작성 한 후 붉은 부분을 추가 합니다.

[MainViewController.swift 파일 안]

// * WKWebView를 사용하기 위해서는 WebKit 모듈을 import 시켜야 합니다.

import WebKit

 

class MainViewController: UIViewController {

    // * WKWebView 객체 선언

    private var wkWebView: WKWebView? = nil

 

    override func viewDidLoad() {

        super.viewDidLoad()

        // * WKWebView 구성

        //    - 여기서는 self.view 화면 전체를 WKWebView로 구성하였습니다.

        self.wkWebView = WKWebView.init(frame: CGRect.init(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))

 

        // * WKWebView 미리보기 3D Touch OFF

        //    - Default 값은 true 입니다.

        self.wkWebView?.allowsLinkPreview = false

 

        // * WKWebView 화면 비율 맞춤 설정

        self.wkWebView?.autoresizingMask = UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleWidth.rawValue) | UInt8(UIViewAutoresizing.flexibleHeight.rawValue)))

 

        // * WKWebView 여백 및 배경 부분 색 투명하게 변경

        self.wkWebView?.backgroundColor = UIColor.clear

        self.wkWebView?.isOpaque = false

        self.wkWebView?.loadHTMLString("<body style=\"background-color: transparent\">", baseURL: nil)

   

         // * WKWebView에 로딩할 URL 전달

         //    - 캐시 기본 정책 사용, 타임아웃은 10초로 지정하였습니다.

         let request: URLRequest = URLRequest.init(url: NSURL.init(string: "<URL 입력>")! as URL, cachePolicy: URLRequest.CachePolicy.useProtocolCachePolicy, timeoutInterval: 10)

         self.wkWebView?.load(request)

 

          // * WKWebView 화면에 표시 

          self.view?.addSubview(self.wkWebView!)

    }

}

 

2. 위 3D Touch를 OFF 하지 않을 경우 아래와 같이 WKWebView 안 특정 링크를 강하게 터치하면(3D Touch) 아래와 같이 미리보기 화면이 출력 됩니다.  

미리보기가 출력된 상태에서 다시 한번 클릭하면 외부 브라우저로 해당 링크를 실행해 버려서 WebView 형태 앱 작업 시 해당 옵션을 OFF 하는 것이 좋습니다.

 

반응형