在UIWebview中禁用UIToolBar上的后退和前进按钮

时间:2010-02-23 11:37:37

标签: iphone uiwebview

我是iphone的新手。我想在UIWebView中禁用UIToolBar上的后退(左箭头按钮)和前进(右箭头按钮)按钮。移动网页后想要启用后退按钮然后转发按钮想要在需要时启用。在我的应用程序中,我通过界面构建​​器在底部使用工具栏。请任何人帮助我!

5 个答案:

答案 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;
    }
}

参考:Same is answered here

答案 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
}