2010-02-23 85 views
8

我是iphone的新手。我想在UIWebView的UIToolBar上禁用Back(左箭頭按鈕)和Forward(右箭頭按鈕)按鈕。移動網頁後,要啓用後退按鈕,然後在需要時啓用前進按鈕。在我的應用程序中,我通過界面生成器在底部使用工具欄。請任何人幫助我!在UIWebview中禁用UIToolBar上的後退和前進按鈕

回答

28

發送以下信息到按鈕對象啓用/禁用:

// Enable 
[myButton setEnabled:YES]; 

// Disable 
[myButton setEnabled:NO]; 

要確定是否應顯示這些按鈕,你應該檢查在網頁視圖以下屬性:

[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]]; 

} 
+0

非常感謝,您的代碼解決了我的問題 – Sivanathan 2010-02-23 12:38:56

4

在一個web視圖的委託方法只實現。

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 

    if ([webView canGoBack]) 
     [backbutton setEnabled:YES]; 
    else 
     [backbutton setEnabled:NO]; 

    if ([webView canGoForward]) 
     [fwdbutton setEnabled:YES]; 
    else 
     [fwdbutton setEnabled:NO]; 
} 
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

0

爲斯威夫特兩個班輪解決方案:

func webViewDidFinishLoad(_ webView: UIWebView) { 
    btnBack.isEnabled = webView.canGoBack 
    btnForward.isEnabled = webView.canGoForward 
}