2017-02-13 9 views
0

У меня есть UIWebView в моем приложении, которое я использую для отображения локально сохраненного содержимого HTML. Содержание включает ссылки, единственная цель которых - направить приложение на отображение другого документа. Эти ссылки используют собственный протокол URL: «jcom: //», а URL-адрес - строка JSON, которая сообщает приложению, как найти связанный документ.UIWebView перестает запускать методы делегатов после ссылки на ссылку

Вы можете задать вопрос, почему мы не просто используем URL-адреса http, чтобы связывать наши документы. Ответ на этот вопрос не имеет особого отношения к рассматриваемому вопросу, и эта деталь не может быть изменена, также, как причины.

При использовании одного из этих соединений мы используем метод UIWebViewDelegatewebView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool. Затем мы можем декодировать полезную нагрузку JSON и загружать правильную страницу.

Проблема возникает, когда ссылка не ссылается на действительный документ. В этом случае мы хотим, чтобы пользователь мог использовать другую ссылку на той же странице. Но после обработки одной из наших ссылок jcom: // UIWebView перестает отправлять нам методы делегирования при подключении ссылок.

Я попытался реализовать обработчик URLProtocol для схемы, но все это делает остановку UIWebView из-за генерирования сбоев нагрузки при подключении ссылок. Его методы также не вызывается, как только одна ссылка была удалена.

Кто-нибудь знает, как я могу восстановить веб-представление в состоянии, когда он снова позволит краны по ссылкам? Благодаря!

+0

- функция делегата shouldStartLoadWith всегда возвращает true? –

+0

Я пробовал оба, и это не имеет никакого значения в любом случае. –

ответ

0

Я ранил сдачу в неизбежность и просто перезагрузил страницу. Это не идеальное решение, а работоспособное в этом конкретном случае.