导航栏中的UIActivityIndi​​catorView在ViewDidLoad之后继续动画

时间:2012-02-03 14:33:03

标签: ios uiwebview uiactivityindicatorview

我有一个问题,活动指示器视图在页面加载完成后继续动画。该问题仅发生在已访问过的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];

}

删除延迟时工作正常。

我继承了代码,所以我不确定是否需要延迟。是否有任何理由延迟展示networkActivityIndi​​cator?

2 个答案:

答案 0 :(得分:0)

听起来你没有设置UIWebViewDelegate。在标头/实现中设置委托,然后开始在UIWebViewDelegate webViewDidStartLoad中设置指标动画,然后停止在webViewDidFinishLoadwebViewDidFailLoadWithError中设置动画。

答案 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];
}