我是新手,想要在UIWebView的UIToolBar上禁用“返回”(左箭头按钮)和“前进”(右箭头按钮)按钮。在移动网页后,希望启用“返回”按钮,然后需要时再启用“前进”按钮。在我的应用程序中,我通过界面生成器在底部使用工具栏。请有人帮助我!
向按钮对象发送以下消息以启用/禁用:
// Enable
[myButton setEnabled:YES];
// Disable
[myButton setEnabled:NO];
为了确定是否应该显示这些按钮,您需要在Web视图上检查以下属性:
[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]];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if ([webView canGoBack])
[backbutton setEnabled:YES];
else
[backbutton setEnabled:NO];
if ([webView canGoForward])
[fwdbutton setEnabled:YES];
else
[fwdbutton setEnabled:NO];
}
对于那些在WKWebView
中遇到问题的开发者,你需要在viewDidLoad
方法中实现KVO来观察WKWebView
的canGoBack
和canGoForward
属性。
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
}
}
除了pheelicks的答案之外,我还需要进行以下更改以禁用后退按钮,当您返回到第一页时和前进按钮当您跳转到最后一页时。
在WebHistoryItemChangedNotification上添加观察者。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(webViewHistoryDidChange:)
name:@"WebHistoryItemChangedNotification"
object:nil];
- (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;
}
}
参考链接:这里已经有答案了
func webViewDidFinishLoad(_ webView: UIWebView) {
btnBack.isEnabled = webView.canGoBack
btnForward.isEnabled = webView.canGoForward
}