MBProgressHUD 无法隐藏的原因

2017-07-06  本文已影响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就可以了

上一篇 下一篇

猜你喜欢

热点阅读