webViewDidFinishLoad no se activa cuando uso goBack

Quiero hacer un trabajo extra después de cargar la página web, así que agrego un código en webViewDidFinished, pero parece que en esta situación no funciona.

Situación: visito una página web con UIWebview y luego hago clic en un enlace a otro, después de eso, corro

[webview goback]; 

Parece que la página se cargó desde el caching, solo

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 

se llama,

 - (void)webViewDidFinishLoad:(UIWebView *)webView; 

no se llama

Por extraño que parezca, sospecho que este es un comportamiento correcto. Del doc de Apple:

webViewDidFinishLoad:

Enviado después de que una vista web termine de cargar un marco.

Mi apuesta es que el UIWebView almacena en caching una cierta cantidad de páginas, y los methods goBack y goForward no garantizan que las ubicaciones almacenadas en la list de reenvío se vuelvan a cargar. Y así no webViewDidFinishLoad .

Pero a pesar de que esto sea un comportamiento correcto, ciertamente estaría de acuerdo con que este es un mal layout de API. Definitivamente debería haber un método finishLoad -ish para conectarlo para el avance / avance / navigation en la página.

Cierto. Todavía hay una forma de estar informado acerca de un cambio en la stack de historial:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(webViewHistoryDidChange:) name:@"WebHistoryItemChangedNotification" object:nil]; 

Como UIWebView no cumple con canGoBack en canGoBack esta parece ser la única forma de habilitar / deshabilitar un button de retroceso potencial.