我有一个问题,活动指示器视图在页面加载完成后继续动画。该问题仅发生在已访问过的UIWebView页面上。
我也在使用MBProgressHUD,这会在预期的ViewDidLoad之后停止动画。
页面几乎立即加载,然后动画在导航栏中开始。这几乎就像从设备缓存中提取页面一样,然后应用程序就会去加载它。
当您访问其他视图控制器时,微调器仅停止动画。
还有其他人遇到类似的问题吗?
修改
- (void)showNetworkActivity {
[self performSelector:@selector(showNetworkActivityWithDelay) withObject:nil afterDelay:0.5];
}
- (void)showNetworkActivityWithDelay {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}
- (void)hideNetworkActivity {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
删除延迟时工作正常。
我继承了代码,所以我不确定是否需要延迟。是否有任何理由延迟展示networkActivityIndicator?
答案 0 :(得分:0)
听起来你没有设置UIWebViewDelegate
。在标头/实现中设置委托,然后开始在UIWebViewDelegate
webViewDidStartLoad
中设置指标动画,然后停止在webViewDidFinishLoad
和webViewDidFailLoadWithError
中设置动画。
答案 1 :(得分:0)
这是解决方案。
尝试直接致电[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
。
performSelector:withObject:afterDelay:在同一个上安排一个计时器 线程在传递的延迟后调用选择器。
我没有看到在这个例子中使用延迟的原因。事实上,如果您使用它,选择器showNetworkActivityWithDelay
会在延迟后调用,而您无法立即在屏幕上看到它。
显然,您可以继续使用以下方法包装活动指示器逻辑(如下所示)(但不是必需的):
- (void)showNetworkActivity {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}
- (void)hideNetworkActivity {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}