我正试图使后退按钮只在用户按下链接和/或canGoBack = TRUE时启用。我尝试在主体中使用if语句,但这不起作用。然后我试着用我能在网上找到的东西,但仍然不起作用。我的代码如下。我做错了什么?谢谢!
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType{
if (navigationType == UIWebViewNavigationTypeLinkClicked)
{
NSString *url = webView.request.URL.absoluteString;
NSURL *nsurl = [NSURL URLWithString:url];
NSURLRequest *nsrequest = [NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
backButton.enabled = TRUE;
}
return TRUE;
}
如果你没有设置web视图的委托,shouldStartLoadWithRequest()将不会被调用。
为了使用UIWebView它通常被设置为视图控制器的outlet属性,所以你应该有这样的东西:
IBOutlet UIWebView* webView;
webView有一个委托属性需要设置到你的视图控制器,你可以在storyboard中设置委托,但在代码中设置更显式:
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView.delegate = self;
99%的情况下你只需要设置委托,但是UIWebView的委托很有趣它需要在完成时设置为nil。所以加上这个:
- (void)viewDidUnload
{
[self.webView stopLoading];
self.webView.delegate = nil;
UIWebView
和WKWebView
都具有canGoBack
和canGoForward
性质。您可以使用KVO查看这些按钮何时启用,并相应地启用/禁用后退和前进按钮。