Вы можете получать уведомления об изменениях контроллера навигации, но я не верю, что вы можете предотвратить их появление (протокол UINavigationControllerDelegate).
Один из способов решить эту проблему - настроить объект в качестве делегата веб-просмотра (протокол UIWebViewDelegate) и реализовать:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Здесь возвращается NO, чтобы не открывать ссылку в веб-представлении, передать запрос веб-представлению во втором контроллере представления и поместить этот второй контроллер представления в стек контроллера навигации.
Таким образом, вам не нужно перехватывать обратную навигацию, но пользовательский интерфейс ведет себя так, как ожидает пользователь.