У меня есть UIWebView в моем приложении, которое я использую для отображения локально сохраненного содержимого HTML. Содержание включает ссылки, единственная цель которых - направить приложение на отображение другого документа. Эти ссылки используют собственный протокол URL: «jcom: //», а URL-адрес - строка JSON, которая сообщает приложению, как найти связанный документ.UIWebView перестает запускать методы делегатов после ссылки на ссылку
Вы можете задать вопрос, почему мы не просто используем URL-адреса http, чтобы связывать наши документы. Ответ на этот вопрос не имеет особого отношения к рассматриваемому вопросу, и эта деталь не может быть изменена, также, как причины.
При использовании одного из этих соединений мы используем метод UIWebViewDelegate
webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
. Затем мы можем декодировать полезную нагрузку JSON и загружать правильную страницу.
Проблема возникает, когда ссылка не ссылается на действительный документ. В этом случае мы хотим, чтобы пользователь мог использовать другую ссылку на той же странице. Но после обработки одной из наших ссылок jcom: // UIWebView перестает отправлять нам методы делегирования при подключении ссылок.
Я попытался реализовать обработчик URLProtocol для схемы, но все это делает остановку UIWebView из-за генерирования сбоев нагрузки при подключении ссылок. Его методы также не вызывается, как только одна ссылка была удалена.
Кто-нибудь знает, как я могу восстановить веб-представление в состоянии, когда он снова позволит краны по ссылкам? Благодаря!
- функция делегата shouldStartLoadWith всегда возвращает true? –
Я пробовал оба, и это не имеет никакого значения в любом случае. –