Iphone 禁用UIWebview中UIToolBar上的“后退”和“前进”按钮
我不熟悉iphone。我想在UIWebView中禁用UIToolBar上的后退(左箭头按钮)和前进(右箭头按钮)按钮。移动网页后要启用后退按钮,然后在需要时启用前进按钮。在我的应用程序中,我通过界面生成器使用底部的工具栏。请任何人帮帮我 向按钮对象发送以下消息以启用/禁用:Iphone 禁用UIWebview中UIToolBar上的“后退”和“前进”按钮,iphone,uiwebview,Iphone,Uiwebview,我不熟悉iphone。我想在UIWebView中禁用UIToolBar上的后退(左箭头按钮)和前进(右箭头按钮)按钮。移动网页后要启用后退按钮,然后在需要时启用前进按钮。在我的应用程序中,我通过界面生成器使用底部的工具栏。请任何人帮帮我 向按钮对象发送以下消息以启用/禁用: // Enable [myButton setEnabled:YES]; // Disable [myButton setEnabled:NO]; 要确定是否应显示这些按钮,应检查webview上的以下属性: [myW
// 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]];
}
只需在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];
}
除了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;
}
}
请参阅:Swift的双衬里解决方案:
func webViewDidFinishLoad(_ webView: UIWebView) {
btnBack.isEnabled = webView.canGoBack
btnForward.isEnabled = webView.canGoForward
}
对于在
WKWebView
中努力解决此问题的开发人员,您需要实现KVO以观察viewDidLoad
方法中canGoBack
和canGoForward
的WKWebView
属性
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoBack), options: .new, context: nil)
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoForward), options: .new, context: nil)
在观察者方法中
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(WKWebView.canGoBack) || keyPath == #keyPath(WKWebView.canGoForward) {
backButton.isEnabled = webView.canGoBack
forwardButton.isEnabled = webView.canGoForward
}
}
另外,在解除分配ViewController时,不要忘记删除观察者。非常感谢。不是现有的最干净的解决方案。但肯定工作得很好!!!