解决方案
在viewDidAppear回调进行遍历WKWebView的subviews,查找WKCompositingView是否存在来判断是否白屏;出现白屏可以关闭页面或者重新构造WKWebView页面,经过测试reload,loadRequest没有效果;
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
BOOL isblank = [self isBlankView:self.webView];
if (isblank)
{
[self performSelector:@selector(dismissViewController) withObject:nil afterDelay:0.1];
}
}
- (void)dismissViewController
{
[self.navigationController popViewControllerAnimated:YES];
}
/*
* 判断是否白屏(WKCompositingView不存在)
* YES:blank
*/
- (BOOL)isBlankView:(UIView*)view
{
//NSLog(@"root:%@", NSStringFromClass(view.class));
Class wkCompositingView = NSClassFromString(@"WKCompositingView");
if ([view isKindOfClass:[wkCompositingView class]])
{
return NO;
}
for (UIView *subView in view.subviews)
{
//NSLog(@"child:%@", NSStringFromClass(subView.class));
if (![self isBlankView:subView])
{
return NO;
}
}
return YES;
}