У меня была аналогичная потребность, и в некоторых случаях просто использования webViewDidFinishLoad было недостаточно, поэтому я использовал webViewDidStartLoad для всех случаев:
func webViewDidStartLoad(webView: UIWebView) {
startedLoading = true
}
func webViewDidFinishLoad(webView: UIWebView) {
alreadyOpen = true
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if startedLoading && alreadyOpen {
// do something
return false
}else if startedLoading && !alreadyOpen{
return false
}else if !startedLoading {
return true
}
return true
}
В некоторых случаях, когда html был загружен, но некоторые ресурсы, такие как изображения и некоторые тяжелые ресурсы внутри DOM, не являлись, метод didFinishLoad не запускался, и пользователь мог перемещаться в этом «коротком» интервале.