Xamarin.Mac WebView FinishedLoad 이벤트의 오해와 진실

Xamarin.Mac으로 MacOS 애플리케이션을 개발할 때 WebKit.WebView를 사용하면 손쉽게 WebView를 지원할 수 있다.

원하는 Url로 이동하기

원하는 Url로 이동하는 것은 다음과 같이 할 수 있다.

MyWebView.MainFrame.LoadRequest(NSUrlRequest.FromUrl(NSUrl.FromString("http://naver.com/")));

페이지가 모두 로드 완료된 것을 확인하기

오해
WebKit.WebView에는 FinishedLoad란 이벤트가 있어 왠지
이걸 핸들링하면 http://naver.com/이 로드 완료되는 시점을 알 수 있을 것 같다. 그런데 이것이 오해다.

진실
실제로 http://naver.com/으로 이동하는 중에 FinishedLoad 이벤트가 발생하는 횟수는 필자가 이 글을 쓰는 2017년 1월 26일 현재 9회다.
아래와 같은 URL에 대한 FinishedLoad 이벤트가 발생한다.

오해와 진실 사이에서 우리 Xamarin.Mac 개발자는 어떻게 해야 할까? 제대로 페이지 전체가 로드완료된 시점을 알려면 어떻게 해야할까? 그것은 다음 글에서 다루겠다.

위 내용을 쉽게 테스트 해볼 수 있도록 GitHub에 테스트코드를 포함한 프로젝트를 올려놓았다.