Перехват события навигации кнопки возврата

У меня есть приложение для навигации. После щелчка по строке в табличном представлении я нажимаю UIWebView. В UIWebView есть веб-ссылки. Пользователь щелкает ссылку, которая отображает внешнюю веб-страницу. Все это происходит в моем приложении. Верхняя панель навигации не изменилась при нажатии на ссылку, которая отображает внешнюю веб-страницу. Однако, как только пользователь нажимает верхнюю левую кнопку навигации, он возвращается к табличному представлению, а не к исходному UIWebView. Как я могу подключиться к кнопке навигации назад и вернуть пользователя к исходному UIWebView, если он щелкает по внешней ссылке?


person 4thSpace    schedule 18.04.2009    source источник


Ответы (1)


Вы можете получать уведомления об изменениях контроллера навигации, но я не верю, что вы можете предотвратить их появление (протокол UINavigationControllerDelegate).

Один из способов решить эту проблему - настроить объект как делегат веб-просмотра (протокол UIWebViewDelegate) и реализовать:

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

Здесь верните NO, чтобы не открывать ссылку в веб-представлении, передать запрос веб-представлению во втором контроллере представления и подтолкнуть этот второй контроллер представления к стеку контроллеров навигации.

Таким образом, вам не нужно перехватывать обратную навигацию, но пользовательский интерфейс ведет себя так, как ожидает пользователь.

person duncanwilcox    schedule 19.04.2009