我正在使用Storyboard构建应用。我也使用UINavigationController。
其中一个视图有一个工具栏,并且有一个barButtonItem,它直接连接到另一个视图作为“show”segue,并且视图被正确显示。
要显示的视图创建WKWebView的实例。在这个视图中,WKWebView工作正常。
但是,当我点击NavigationBar的后退按钮时,应用程序崩溃了,即使我设置了所有异常,我也无法捕捉异常。
在使用WKWebView的视图的viewDidLoad中,
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.allowsInlineMediaPlayback = YES;
configuration.allowsAirPlayForMediaPlayback = YES;
configuration.requiresUserActionForMediaPlayback = YES;
configuration.allowsPictureInPictureMediaPlayback = YES;
webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
webView.translatesAutoresizingMaskIntoConstraints = NO;
webView.allowsLinkPreview = YES;
webView.allowsBackForwardNavigationGestures = YES;
[_childView addSubview:webView];
webView.navigationDelegate = self;
webView.UIDelegate = self;
// Autolayout
NSDictionary *views = NSDictionaryOfVariableBindings(webView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[webView(>=0)]-0-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[webView(>=0)]-0-|" options:0 metrics:nil views:views]];
// Propertiesの監視
[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"loading" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"canGoForward" options:NSKeyValueObservingOptionNew context:nil];
我创建了WKWebView的实例。
点击UINavigationController时如何避免崩溃?
提前致谢。
答案 0 :(得分:0)
WKWebView被解除分配,而键值观察者仍然注册了它,我认为你应该在deinit时删除观察者。如:
deinit
{
webview.removeObserver(self, forKeyPath: "estimatedProgress")
}