我正在加载这样的请求[resultsWebView loadRequest:searchRequest];
然后我这样做
- (void) webViewDidFinishLoad:(UIWebView *)webView {
if ([resultsWebView canGoBack]) {
[goBackButton setEnabled:YES];
}
else {
[goBackButton setEnabled:NO];
}
if ([resultsWebView canGoForward]) {
[goForwardButton setEnabled:YES];
}
else {
[goForwardButton setEnabled:NO];
}
}
canGoBack
总是返回NO
.它之前在工作,但它突然停止工作(我没有做任何代码更改(。我不知道这怎么可能?解决这个问题没有任何成功。有一个关于stackoverflow UIWebView可以GoBack的问题,canGoForward总是返回NO。但它是不同的,因为问题作者使用的是loadData
,他使用loadRequest
解决了问题。但是我已经在使用loadRequest
.再一次,它之前在工作,但它突然停止工作(我没有做任何代码更改(。帮帮我。
问题原因:
params = [NSString stringWithFormat:@"query=%@", searchTextField.text];
NSMutableURLRequest *searchRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.example.com/do/m/]];
[searchRequest setHTTPMethod:@"POST"];
[searchRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
如果我使用如下所示的简单请求,它可以正常工作。
NSURLRequest *searchRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://www.example.com/do/m/?%@", params]] ];
谢谢
即使您可以看到页面在 Web 视图中成功呈现,请求也可能失败,您还需要将这些后退/前进逻辑设置为 – webView:didFailLoadWithError:
。
最后,我发现,如果 URL 在 loadRequest
方法的连续 POST 请求中相同,那么canGoBack
不起作用。它适用于简单的 GET 请求,因为 URL 不同。 为了解决这个问题,我发送了带有两个URL的连续POST请求,从UIWebView
的角度来看是不同的,但从服务器的角度来看实际上是相同的。我正在通过添加问号(?(为连续的 POST 请求设置不同的 URL。
https://www.example.com/do/m/
https://www.example.com/do/m/?
这样,对于UIWebView
的连续 POST 请求,URL 会变得不同,并且canGoBack
方法有效。
我仍然不知道这是否是UIWebView
中的错误,或者我们不能使用连续的 POST UIWebView
请求来获得canGoBack
方法的工作。