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中放置所需的内容,则应该这样做。