iOS:用户完成输入几秒钟后调用函数

我想创建一个UISearchBar函数,它被调用就像在App Store中搜索一样:几秒钟后执行函数(NSURLConnection)(NSTimer),用户确实完成了输入,这段时间只有一次。

有没有人有想法?

编辑

self.currentTaskID = self.currentTaskID + 1; NSInteger taskID = self.currentTaskID; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), queue, ^{ if (taskID == self.currentTaskID) { NSMutableURLRequest *request_CH3 = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://website.com/search.php?term=%@", replaceWhiteSpace]] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30.0]; [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; authConnection_CH3 = [[NSURLConnection alloc] initWithRequest:request_CH3 delegate:self]; } }); 

我最近回答了类似的问题,你可以在这里找到它

基本上,您可以延迟对搜索进行排队,如果在指定时间段内有新的搜索,则会解除之前安排的搜索。

而不是使用计时器来执行此操作,实现UISearchBarsearchBarTextDidEndEditingsearchBar:textDidChange的委托函数,然后当您对用户输入的字符数满意时,将启动NSURLConnection请求

在您要调用搜索function的function中(在您点击后的情况下)

实现这个:

 [timer invalidate]; timer = nil; timer = [NSTimer scheduledTimerWithTimeInterval: 3.0 target: self selector: @selector(thefunctionyouwanttocall) userInfo: nil repeats: NO]; 

这将在点击事件发生后3秒调用您的函数