次の URL を使用して、ローカルの html ページと shouldStartLoadWithRequest: 内を読み込んでいます。
... /Library/Application%20Support/CDS/%3Fpid=27ce1ef8-c75e-403b-aea1-db1ae31e05cc/...
そのページ内で、ユーザーがリンクをクリックして外部 Web サイトに移動した場合、ユーザーは戻るボタンをクリックします。私のコードはそれを処理します。
if ([self.webView canGoBack])
[self.webView goBack];
ただし、[self.webView goBack] を呼び出した結果として shouldStartLoadWithRequest: が再度呼び出されると、 shouldStartLoadWithRequest: に渡される URL が次のように変更されました。
`... /Library/Application%20Support/CDS/?pid=27ce1ef8-c75e-403b-aea1-db1ae31e05cc/..`.
つまり、OS は URL 内の「%3F」を「?」に変更しました。
shouldStartLoadWithRequest: から YES を返しますが、"%3f" が "?" になっているためです。didFailLoadWithError: が WebKitErrorDomain 102 で呼び出され、ページの読み込みに失敗するという結果になります。
ファイルには実際に ? その名前ではありますが、次のように UIWebView:loadRequest: に渡される NSURL オブジェクトを構築するプロセス中にそれを %3F に変換するのは iOS システム コールです。
NSURL *fullURL = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask
appropriateForURL:nil
create: YES
error:&err];
fullURL = [fullURL URLByAppendingPathComponent:folderLocation isDirectory:YES];
fullRUL = [fullURL URLByAppendingPathComponent: pageToLoad isDirectory:NO];
NSURLRequest *requestObj = [NSURLRequest requestWithURL: fullURL];
[self.webView loadRequest:requestObj];
folderLocation は ? を含む NSString であり、URLByAppendingPathComponent への呼び出しはこれを %3F に自動的に変換しますが、その変換がなければページの読み込みは失敗します。
誰もこれを見たことがありますか?