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