아이폰 Swift 개발 #6 Web Browser App

2016-01-22 jay 5116

이번 강좌에서는 아이폰의 WebView를 이용해서 간단히 Web Browser를 만들어 보도록 하겠습니다. 프로젝트는 "Single View Application"으로 선택하고 "Next" 버튼을 클릭 합니다



이제 생성하는 뷰의 클래스 이름을 webBrowerTest로 지정을 합니다. 그리고 아이폰으로 개발하기 때문에 iPhone으로 설정하고 개발 언어는 Swift로 지정 하겠습니다.



Main.storyboard 파일을 선택 하고 다음 그림과 같이 화면 디자인을 해보겠습니다. 화면은 사용자 URL을 입력하는 textView와 페이지 이동에 대한 컨트롤( 이전, 다음, 새로고침) 버튼을 화면 상단에 배치 하고 나머지 부분은 웹페이지가 표시될 WebView를 그리면 됩니다.  



WebView를 배치 하고 다음 그림과 같이 "Scales Page To Fit", "Links"속성을 체크해 줍니다. 화면에 좀더 자연스럽게 보이기 위한 옵션이기 때문에 설정 한 것이기 때문에 동작 유무와는 관계는 없습니다. 우섬 2개의 옵션을 추가로 선택 했습니다.



소스 코드를 작성 하기 위해서 ViewVontroller.swift를 선택하고 코드를 작성해 보겠습니다



가장 먼저 위의 소스 코드의 (1)번과 같이 WebView, TextField의 이벤트를 처리 하기 위해 UIWebViewDelegate, UITextFieldDelegate를 선언합니다.


그리고 stroryboard에서 작성한 UI를 제어 하가 위해서 webview, textfiedl에 대한 IBOutlet을 선언합니다. 이제 뷰가 로딩을 하게 되면 기본 페이지로 "http://www.iphone-forum.co.kr"이 로딩 되도록 (2)번과 같이 기본 페이지의 string을  NSURL로 변환해서 webview로 페이지를 로딩 합니다. 


이제 (4),(5)번과 같이  WebView, TextView의 이벤트 메세지를 처리 하는 Delegate함수를 작성해 보겠습니다. (4)번은 WebView의 Delegate를 처리 하는 함수이며, 이름으로 알수 있듯이 WebView가 페이지를 로딩할때와 로딩이 완료 됐을때 메세지를 넘겨주는 함수 입니다. 그래서 페이지 로딩을 하면 로딩중이기 때문에 indicater를 표시하고 웹페이지를 전부 로딩하면 indicater 안보이게 처리를 해주고 있습니다.


마지막으로 (5)은 TextField에서 입력을 완료 하기 위해 Return을 눌렸을때 처리 하도록 호출 되는  함수 이며.  resignFirstResponder()는  키보드를 내리도록 하는 함수 입니다. 즉 입력이 완료 하면 키보드롤 내리게 됩니다. 그리고 입력이 완료 됐을때 처리하는 textDone()함수를 작성 합니다.


textDone()함수는 입력이 완료 됐을때 실행이 되며 사용자가 입력한 TexField의 URL로 재접속합니다. 이제 storyboard로 가서 ViewContoroller의 WebView클릭 하고 오른쪽의 goBark, goForword, reload를 해당 버튼에 연결을 합니다.

이제 textField, WebView의 Outlet을 다음 그림과 같이 연결 합니다.



이제 마지막으로 TextField 입력이 완료 됐을때 실행하는 IBAction을 다음 그림과 같이 연결합니다.

이제 수정한 storyboard의 내용을 저장하고 소스 코드를 실행 하면 "실행 결과"의 첫번쨰 화면 처럼 "http://www.iphone-forum.co.kr"이 웹뷰에 기본 페이지로 출력이 되며, 이후에 textField에 "http://www.apple.com"을 입력하고 리턴키를 입력 하면 새로 입력한 URL로 이동하게 됩니다. 


-실행 결과