简单的概念,但它不起作用。我的UIWebView
中有两个按钮,一个后退按钮和一个前进按钮。后退按钮调用 [self.webView goBack] 并转发 [self.webView goForward] 。
现在我想基本知道UIWebView
是否可以返回。如果是这样,那么启用后退按钮,然后让它返回,前进按钮也是如此。
-(void)webViewDidStartLoad:(UIWebView *)webView
{
if([self.webView canGoForward]) {
[forwardArrowBtn setEnabled:YES];
} else {
[forwardArrowBtn setEnabled:NO];
}
if([self.webView canGoBack]) {
[backArrowBtn setEnabled:YES];
} else {
[backArrowBtn setEnabled:NO];
}
}
问题是这对第一次加载不起作用。例如:我点击UIWebView
中的链接,它会转到该页面,但后退按钮仍处于禁用状态且无法点击。直到我点击其他链接后,后退按钮才会启用并开始工作。
为什么第一次去另一个页面时这不起作用,只能第二次使用?
答案 0 :(得分:12)
我在将按钮设置代码放在webViewDidStartLoad中时解决了这个问题。编写一个方法并从webViewDidStartLoad,webViewDidFinishLoad和shouldStartLoadWithRequest中调用它。与我的应用程序完美配合。
答案 1 :(得分:3)
您的首页是否是设备上的实际网址或文件?当我开始使用loadHTMLString时,我遇到了这个问题,大概是因为实际上没有任何东西可以追溯到(我假设UI不会缓存页面内容,只是对页面的引用)。当我使用loadRequest时,它工作正常。也就是说,你需要像Aemsn所说的那样做。可以在this link找到一个好的教程。
答案 2 :(得分:1)
在进行随机网络搜索时来到这里,回答“为什么它只能在第二次工作的'基础'问题:
在实际加载下一页之前, webViewDidStartLoad被调用。对于你正在做的事情,webViewDidFinishLoad更有意义。因此,当您第一次加载时,您无法返回(无需向前或向后加载任何内容)。第一次更改页面时,您仍然无法 - 仅加载一页(当前)。因此,第二次是它似乎有效。答案 3 :(得分:0)
我遇到了同样的问题,我只想出来了。我假设您没有使用webView:loadRequest:
选择器来加载webcontent?相反,你可能使用了
webView:loadData:MIMEType:textEncodingName:baseURL:
或loadHTMLString:baseURL:
选择器。
这正是我所做的。如果您使用webView:loadRequest:
选择器,它将起作用 - 至少它对我有效。