iOS:一旦活动指标停止,如何执行一段代码?

我需要一种方法来执行类似下面的function,而不是等待3秒钟,等待活动指示器隐藏[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 。 任何提示或build议表示赞赏。

 double delayInSeconds = 3.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ // lines of code }); 

你如何使用键值观测 :

声明上下文

 static int NetworkActivityContext; 

添加你的观察者

 [[UIApplication sharedApplication] addObserver:self forKeyPath:@"networkActivityIndicatorVisible" options:NSKeyValueObservingOptionNew context:&NetworkActivityContext]; 

实施KVOcallback

 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (context == &NetworkActivityContext) { BOOL isNetworkActivityVisible = [UIApplication sharedApplication].networkActivityIndicatorVisible; if(!isNetworkActivityVisible){ //Do whatever work you need to do now that it's hidden } } } 

不要依赖活动指示器来确定应用程序的stream程。 如果你设置了[UIApplication sharedApplication].networkActivityIndicatorVisible = NO你也应该发出通知或者向更广泛的受众表明活动已经结束。 然后听取通知,并做你需要做的其他地方。

如果在同一个类中设置networkActivityIndicatorVisible ,或者如果您正在执行networking调用,并且可以在完成块或委托callback中放置所需的内容,则应该这样做。