我正在尝试这样做,以便只有当用户按下链接和/或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;
}
答案 0 :(得分:2)
shouldStartLoadWithRequest()将不会被调用。
为了使用UIWebView,它通常设置为视图控制器的outlet属性,所以你应该有这样的东西:
IBOutlet UIWebView* webView;
webView有一个委托属性需要设置到你的视图控制器,你可以在一个故事板中设置委托,但更明确的是在代码中设置它:
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView.delegate = self;
99%的时间你只是设置了委托,但是UIWebView的委托很有趣,因为它在完成时需要设置为nil。所以加上这个:
- (void)viewDidUnload
{
[self.webView stopLoading];
self.webView.delegate = nil;
答案 1 :(得分:-1)
UIWebView
和WKWebView
都有canGoBack
和canGoForward
属性。您可以使用KVO查看何时启用这些功能,并相应地启用/禁用后退和前进按钮。