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