我想创建一个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];
}
});
答案 0 :(得分:3)
我最近对类似的问题做了回答,你可以找到它here
基本上,您可以延迟对搜索进行排队,如果在指定时间段内有新内容,则可以解除之前安排的搜索。
答案 1 :(得分:1)
不使用计时器执行此操作,而是实现UISearchBar
,searchBarTextDidEndEditing
或searchBar:textDidChange
的委托功能,然后当您对用户输入的字符数满意时将开始您的NSURLConnection
请求
答案 2 :(得分:1)
在您要调用搜索功能的功能中(在您点击后的情况下)
实现这个:
[timer invalidate];
timer = nil;
timer = [NSTimer scheduledTimerWithTimeInterval: 3.0 target: self selector: @selector(thefunctionyouwanttocall) userInfo: nil repeats: NO];
这将在点击事件后3秒调用您的函数