我正在尝试使其仅在用户按下链接和/或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有一个委托属性,需要对您的视图控制器进行设置,您可以在情节提要中设置委托,但在代码中对其进行设置更为明确:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.webView.delegate = self;


您有99%的时间只是设置了委托,但UIWebView的委托很有趣,因为完成后需要将其设置为nil。因此添加:

- (void)viewDidUnload
{
    [self.webView stopLoading];
    self.webView.delegate = nil;

10-07 20:02
查看更多