如何在我的UIWebView中单击链接时如何启用后退按钮? (代码不会执行)

时间:2015-05-26 22:04:28

标签: ios hyperlink uiwebview back

我正在尝试这样做,以便只有当用户按下链接和/或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;
}

2 个答案:

答案 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)

UIWebViewWKWebView都有canGoBackcanGoForward属性。您可以使用KVO查看何时启用这些功能,并相应地启用/禁用后退和前进按钮。

http://nshipster.com/key-value-observing/