У меня проблемы с загрузкой пользовательского HTML в мой UIWebView
без нарушения его метода goBack
.
Что работает
Я перехватываю URL-запросы моего UIWebView
, чтобы я мог загрузить собственный HTML. У меня есть контроль над всем HTML, поэтому в моих специальных запросах приложений используется настраиваемая схема (например, myapp: // arg1 /? arg2 = val
), который я могу проанализировать в webView: shouldStartLoadWithRequest: navigationType:
. Я решаю, какой HTML мне действительно нужен, и вызываю loadHTMLString: baseURL
и возвращаю NO
, чтобы отменить исходный запрос.
Что не работает
Вышеупомянутое отлично работает . Проблема в том, что я хочу использовать метод UIWebView
goBack
и loadRequest:
, похоже, единственный метод UIWebView
, который добавляет в его историю стек.
У меня есть несколько идей, но я не уверен, какие из них осуществимы и как их реализовать. Похоже, главное, что я должен вернуть YES
в webView: shouldStartLoadWithRequest: navigationType
, и я должен использовать UIWebView
'
Могу ли я создать подкласс NSURLRequest, чтобы (когда UIWebView делает запрос) он фактически не выполнял HTTP-запрос и возвращал NSURLResponse с моим HTML-кодом в нем? Или, может быть, каким-то образом изменить / подклассифицировать / добавить метод категории в NSURLResponse? Мне нравится идея, что это настоящий запрос, но меня беспокоят частные API-интерфейсы и их отклонение из App Store.
Идея 2: Обработка настраиваемого протокола URL Зарегистрируйте настраиваемый протокол URL, чтобы мое приложение реагировало на него, и я мог вернуть ему законный ответ NSURLResponse (заполненный моим настраиваемым HTML).
Идея 3: обмануть кеш Создайте запрос с этой политикой кеширования NSURLRequestReturnCacheDataDontLoad
, а затем каким-то образом получить мой HTML-код между webView и кешем?
Или, может быть, я полностью ошибаюсь?