잡다

IOS 스위프트(Swift) 웹뷰 예제 따라하기 본문

개발/IOS

IOS 스위프트(Swift) 웹뷰 예제 따라하기

크로우 2020. 12. 25. 17:39

안녕하십니까. 이번에는 최소한의 기능으로 이루어진 웹뷰를 만들어보겠습니다.

 

 

구축환경

 

OS : Mac OS Big Sur 11.1

툴 : Xcode 12.0

 

 

상단메뉴의 File - NEW - Project 눌러 프로젝트 생성 창을 띄웁니다.

 

 

위의 이미지와같이 항목 설정

 

 

로컬서버나 개발서버의 경우 대부분 http를 사용합니다.

xcode 자체에서 기본적으로 http를 막고 https 만 허용하기 때문에

http 프로토콜에 접속하기 위해서 따로 설정을 해주어야합니다.

 

Info.plist

 

App Transport Security Settings 항목에

     Allow Arbitrary Loads : YES 를 추가한다.

 

 

 

 

Main.storyboard 뷰에 Webkit View 추가 후

 

 

 

ViewController.swift 에 webView 로 설정하여 연결한다. 

 

 

 

 

ViewController.swift

import UIKit
import WebKit

class ViewController: UIViewController,WKUIDelegate,WKNavigationDelegate{

    
    @IBOutlet weak var webView: WKWebView!
    override func loadView() {
            super.loadView()
            
            webView = WKWebView(frame: self.view.frame)
            webView.uiDelegate = self
            webView.navigationDelegate = self
            self.view = self.webView
        }

    override func viewDidLoad() {
        super.viewDidLoad()
       
        let url = URL(string: "https://www.naver.com/") 
        let request = URLRequest(url: url!)
        //self.webView?.allowsBackForwardNavigationGestures = true  //뒤로가기 제스쳐 허용
        webView.configuration.preferences.javaScriptEnabled = true  //자바스크립트 활성화
        webView.load(request)

    }
    
    override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //모달창 닫힐때 앱 종료현상 방지.
    
    //alert 처리
    func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String,
                 initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void){
        let alertController = UIAlertController(title: "", message: message, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "확인", style: .default, handler: { (action) in completionHandler() }))
        self.present(alertController, animated: true, completion: nil) }

    //confirm 처리
    func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
        let alertController = UIAlertController(title: "", message: message, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "취소", style: .default, handler: { (action) in completionHandler(false) }))
        alertController.addAction(UIAlertAction(title: "확인", style: .default, handler: { (action) in completionHandler(true) }))
        self.present(alertController, animated: true, completion: nil) }
    
    // href="_blank" 처리
    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        if navigationAction.targetFrame == nil { webView.load(navigationAction.request) }
        return nil }
    
}

 

 

 

구동화면

 

웹뷰가 잘 작동되는 모습을 볼 수 있다.

Comments