在我的应用中,我有UIWebView。在它下面,我有一个带有后退和前进按钮的工具栏来控制浏览器。如何在用户位于初始页面时禁用后退按钮,并在用户位于最新页面时禁用前进按钮?查看UIWebViewDelegate协议,我没有看到任何回调告诉我用户在浏览器历史记录中的位置。
它应该看起来像Safari的工具栏:
编辑:我想出了检测部分,但我无法找出禁用部分。我的按钮始终保持完全不透明度,即使NSLog
打印出0
或canGoBack
canGoForward
,也可以点按。
·H
@interface VeetleViewController : UIViewController <UIWebViewDelegate> {
UIWebView* webView;
UIBarButtonItem* buttonBack;
UIBarButtonItem* buttonForward;
UIActivityIndicatorView* activityIndicator;
}
- (void)activityIndicatorStop;
@property (nonatomic, retain) IBOutlet UIWebView* webView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem* buttonBack;
@property (nonatomic, retain) IBOutlet UIBarButtonItem* buttonForward;
@property (nonatomic, retain) UIActivityIndicatorView* activityIndicator;
@end
的.m
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"canGoBack:%d canGoForward:%d", self.webView.canGoBack, self.webView.canGoForward);
[self.activityIndicator startAnimating];
if (self.webView.canGoBack) {
self.buttonBack.enabled = YES;
} else {
self.buttonBack.enabled = NO;
}
if (self.webView.canGoForward) {
self.buttonForward.enabled = YES;
} else {
self.buttonForward.enabled = NO;
}
}
答案 0 :(得分:2)
它是UIWebView上的属性,而不是委托。
参见:canGoBack和canGoForward。
答案 1 :(得分:0)
只需在Web视图的一个委托方法中实现:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[backbutton setEnabled:[webView canGoBack]];
[fwdbutton setEnabled:[webView canGoForward]];
}