WebView 앱의 Button 액션 구현하기

Posted on 2021-09-05 by GKSRUDTN99
Swift&Xcode Xcode WebView

Site1, Site2 버튼에 대한 코드 추가하기

1. Site1과 Site2 버튼을 클릭해서 이동할 웹 사이트의 주소를 btnGoSite1, btnGoSite2 함수에 추가한다.
@IBAction func btnGoSite1(_ sender: UIButton) {
        loadWebPage("https://naver.com")
    }

@IBAction func btnGoSite2(_ sender: UIButton) {
        loadWebPage("https://codecamper.me/blog/")
    }

정지, 재로딩, 이전페이지로 이동, 다음 페이지 Button에 대한 코드 추가하기

1. btnStop, btnReload, btnGoBack, btnGoForward 함수에 다음 코드들을 추가한다.
@IBAction func btnStop(_ sender: UIBarButtonItem) {
        myWebView.stopLoading()
    }

@IBAction func btnReload(_ sender: UIBarButtonItem) {
        myWebView.reload()
    }

@IBAction func btnGoBack(_ sender: UIBarButtonItem) {
        myWebView.goBack()
    }

@IBAction func btnGoForward(_ sender: UIBarButtonItem) {
        myWebView.goForward()
    }

HTML Button에 대한 코드 추가하기

1. 다음 코드를 btnLoadHtmlString 함수 안에 입력한다.
@IBAction func btnLoadHtmlString(_ sender: UIButton) {
        let htmlString = "<h1> HTML String </h1><p> String 변수를 이용한 웹 페이지 </p> <p><a href=\"https://codecamper.me/blog/\">blog</a>로 이동</p>"
        myWebView.loadHTMLString(htmlString, baseURL: nil)
    }
  • loadHTMLString 함수를 이용해 변수에 저장된 HTML문을 WebView에 나타낸다.

File Button에 대한 코드 추가하기

1. 프로젝트의 Root폴더 아래에 'htmlView.html' 파일을 새로 만든다.
  • New File에서 Empty File을 사용한다.
2. htmlView.html 파일을 다음과 같이 작성한다.
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <h1> HTML FILE </h1>
        html File을 이용한 웹페이지<br>
        <p><a href = "https://codecamper.me/blog/">CodeCamper의 블로그</a>로 이동</p>
    </body>
</html>
3. ViewController.swift에서 btnLoadHtmlFile 함수를 다음과 같이 작성한다.
@IBAction func btnLoadHtmlFile(_ sender: UIButton) {
        let filePath = Bundle.main.path(forResource: "htmlView", ofType: "html")
        let myUrl = URL(fileURLWithPath: filePath!)
        let myRequest = URLRequest(url: myUrl)
        myWebView.load(myRequest)
    }
  • Bundle.main.path 함수를 사용해 htmlView.html의 파일에 대한 path 변수를 생성한다.
  • Bundle.main.path 함수를 사용해 프로젝트 내에 있는 파일의 경로를 가져 올 수 있다.
  • 프로젝트 경로 아래에 있는 파일을 찾아오기 때문에, 기기가 바뀌어도 파일을 가져오는데 문제가 없다.

Go Button에 대한 코드 추가하기

1. http:// 문자열을 자동으로 추가해주는 checkUrl 함수를 추가하기
func checkUrl(_ url: String) -> String {
        var strUrl = url
        let flag = strUrl.hasPrefix("http://") || strUrl.hasPrefix("https://")
        if !flag {
            strUrl = "http://" + strUrl
        }
        return strUrl
    }
2. Go 버튼을 눌렀을 때 TextField에 적힌 주소로 WebView가 로딩되도록 btnGotoUrl 함수를 작성한다.
@IBAction func btnGotoUrl(_ sender: UIButton) {
        let myUrl = checkUrl(txtUrl.text!)
        txtUrl.text = ""
        loadWebPage(myUrl)
    }