iOS 5 UIWebview Delegate: WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction

前端 未结 5 782
借酒劲吻你
借酒劲吻你 2020-12-16 22:38

I am using the delegate method shouldStartLoadWithRequest to catch link clicks and handle specific cases inside my app instead of allowing the webView

相关标签:
5条回答
  • 2020-12-16 22:55

    Check out if you nullify delegate property of UIWebView in its controller dealloc method (of course if this controller is webview's delegate). Like this:

    - (void) viewDidLoad
    {
        webView.delegate = self;
    }
    - (void) dealloc
    {
        webView.delegate = nil;
    }
    

    From the Apple docs on the delegate property:

    Important. Before releasing an instance of UIWebView for which you have set a delegate, you must first set its delegate property to nil. This can be done, for example, in your dealloc method.

    0 讨论(0)
  • 2020-12-16 23:07

    I have absolutely no idea why I'm getting this error from Webkit, but I traced it down to trying to insert a value in a dictionary with a nil key.

    0 讨论(0)
  • 2020-12-16 23:09

    Yet another cause for this error can be the fact that Autolayout is accidentally left enabled in the viewcontroller containing the webview. This happened to me while testing on iOS5.

    0 讨论(0)
  • 2020-12-16 23:09

    I got a similar error:

    ***WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:frame:decisionListner: delegate: - [UIPopoverController dealloc] reached while popover is still visible.

    The problem seems to be caused by the following code:

    UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:vc];
    [pc presentPopoverFromRect:frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
    

    Apparently, pc is being deallocated when the routine exits. I changed the code to make pc a property and WebKit stopped complaining.

    0 讨论(0)
  • 2020-12-16 23:12

    I fixed this by ensuring that all previous requests on the webview were stopped before continuing:

    [webview stopLoading];
    
    0 讨论(0)
提交回复
热议问题