美文网首页
MBProgressHUD 无法隐藏的原因

MBProgressHUD 无法隐藏的原因

作者: 成语笔记 | 来源:发表于2017-07-06 13:20 被阅读496次

最近在做项目的时候做了一个UIWebView加载pdf的页面,在[_webView loadRequest:_request];  开始请求之后,加上了一句 [MBProgressHUD showMessage:@""];  代页面加载完毕之后,再调用[MBProgressHUD hideHUD];方法的时候发现,MBProgressHUD竟然不消失。

进到框架中发现

if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];这句,就是在未指定MBProgressHUD显示在哪个视图中的时候,框架会自动的将它加到[[UIApplication sharedApplication].windows lastObject] 中,而当你调用[MBProgressHUD hideHUD]的时候,框架会自动的找到当前的[[UIApplication sharedApplication].windows lastObject],然后隐藏MBProgressHUD,其中的问题就是,在你加载UIWebView之前和加载WebView之后的[UIApplication sharedApplication].windows.count是不一样的,windows中的数量发生了变化,也就是框架再次调用[[UIApplication sharedApplication].windows lastObject] 这句话的时候是无法找到当前视图中的MBProgressHUD 的,因此,调用[MBProgressHUD hideHUD]时无效的。

解决办法

MBProgressHUD * hudView = [MBProgressHUD showHUDAddedTo:self.view animated:YES];

[hudView show:YES];

通过这种方式指定MBProgressHUD所在的视图,然后通过[MBProgressHUD hideAllHUDsForView:self.view animated:YES];这种方式隐藏MBProgressHUD就可以了

相关文章

网友评论

      本文标题:MBProgressHUD 无法隐藏的原因

      本文链接:https://www.haomeiwen.com/subject/ldshhxtx.html