일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 리눅스
- IOS #Swift #웹뷰 #Webview #스위프트 #애플
- 편집기
- 안드로이드 #android #웹뷰 #webview #javascript
- 개발
- 빔
- vi
- linux
- 웹소켓채팅
- 채팅
- CentOS
- 단어
- chatting
- vim
- 웹소켓
- WebSocket
- it
- 개발용어
- DB #DataBase #데이터베이스 #예외처리 #Exception
Archives
- Today
- Total
잡다
IOS 스위프트(Swift) 웹뷰 예제 따라하기 본문
안녕하십니까. 이번에는 최소한의 기능으로 이루어진 웹뷰를 만들어보겠습니다.
구축환경
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