私は同じ問題を抱えていました。履歴を管理しようとしましたが、エラーが発生しやすくなります。今、私はこれのより良い解決策を発見しました。
やりたいことは、loadHTMLString/loadData を呼び出す前に、loadRequest を about:blank に追加し、それをプレースホルダーとして作成するだけです。その後、履歴の監視から完全に解放されます。webview.canGoBack と canGoForward は機能します。もちろん、プレースホルダー about:blank に戻るにはハックが必要です。これは webViewDidFinishLoad で行うことができます。コードのハイライトは次のとおりです。
関数内で loadHTMLString を呼び出す場合:
[weakSelf.fbWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
[weakSelf.fbWebView loadHTMLString:stringResponse baseURL:url];
goBack を処理するコード:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if ([webView.request.URL.absoluteString isEqualToString:@"about:blank"]
&& ![webView canGoBack] && [webView canGoForward]) {
[weakSelf.fbWebView loadHTMLString:stringResponse baseURL:url];
}
}
このソリューションを拡張して、最初の読み込みではない loadHTMLString を処理することも可能だと思います。スタックにすべての文字列応答を記録し、各 loadHTMLString に about:blank を挿入するだけです。about:blank に戻るたびにスタックをポップします。