我无法在UIWebView
不破坏其goBack
方法的情况下将自定义 HTML 加载到我的中。
什么有效
我正在拦截我的 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 请求并返回一个带有我的 HTML 的 NSURLResponse?或者也许修改/子类/添加一个类别方法到 NSURLResponse 不知何故?我喜欢它是一个真实请求的想法,但我担心私有 API 并被 App Store 拒绝。
想法 2:处理自定义 URL 协议 注册自定义 URL 协议,以便我的应用程序响应它,我可以让它返回一个合法的 NSURLResponse(填充我的自定义 HTML。)
想法 3:愚弄缓存使用此缓存策略创建请求,NSURLRequestReturnCacheDataDontLoad
然后以某种方式在 webView 和缓存之间获取我的 HTML?
或者也许我完全走错了路?