我是iphone的新手。我想在UIWebView中禁用UIToolBar上的后退(左箭头按钮)和前进(右箭头按钮)按钮。移动网页后想要启用后退按钮然后转发按钮想要在需要时启用。在我的应用程序中,我通过界面构建器在底部使用工具栏。请任何人帮助我!
答案 0 :(得分:28)
将以下消息发送到按钮对象以启用/禁用:
// Enable
[myButton setEnabled:YES];
// Disable
[myButton setEnabled:NO];
要确定是否应显示这些按钮,您应该检查webview上的以下属性:
[myWebView canGoBack];
[myWebView canGoForward];
每当用户加载页面时,您都会想要检查这些内容。为此,请实现UIWebViewDelegate方法webViewDidFinishLoad:
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
// Enable or disable back
[myBackButton setEnabled:[myWebView canGoBack]];
// Enable or disable forward
[myForwardButton setEnabled:[myWebView canGoForward]];
}
答案 1 :(得分:4)
只需在webView的委托方法之一中实现。
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if ([webView canGoBack])
[backbutton setEnabled:YES];
else
[backbutton setEnabled:NO];
if ([webView canGoForward])
[fwdbutton setEnabled:YES];
else
[fwdbutton setEnabled:NO];
}
答案 2 :(得分:1)
除了pheelicks回答之外,当你回到第一页时,我必须进行以下更改以禁用后退按钮。当你走到最后一页时,我必须进行以下更改。
在WebHistoryItemChangedNotification上添加了一个观察者。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(webViewHistoryDidChange:)
name:@"WebHistoryItemChangedNotification"
object:nil];
更新webViewHistoryDidChange中的按钮状态。
- (void)webViewHistoryDidChange
{
if ([theWebView canGoBack])
{
self.backButton.enabled = YES;
}
else
{
self.backButton.enabled = NO;
}
if ([theWebView canGoForward])
{
self.forwardButton.enabled = YES;
}
else
{
self.forwardButton.enabled = NO;
}
}
答案 3 :(得分:1)
对于在WKWebView
中努力解决此问题的开发人员,您需要实施KVO来观察{{1}中canGoBack
的{{1}}和canGoForward
属性}方法。
WKWebView
在观察者方法中
viewDidLoad
此外,别忘了在ViewController被释放时删除观察者。
答案 4 :(得分:0)
Swift的双线解决方案:
func webViewDidFinishLoad(_ webView: UIWebView) {
btnBack.isEnabled = webView.canGoBack
btnForward.isEnabled = webView.canGoForward
}