0

我想创建一个 UISearchBar 函数,它像 App Store 中的搜索一样被调用:在用户完成输入几秒钟后(NSTimer)执行函数(NSURLConnection),并且在此期间只执行一次。

有人有想法吗?

编辑

    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];
        }
    });
4

3 回答 3

3

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

基本上,您可以延迟搜索排队,如果在指定时间内有新的搜索,则取消任何先前安排的搜索。

于 2012-11-07T21:50:29.757 回答
1

不要使用计时器来执行此操作,而是实现UISearchBar,searchBarTextDidEndEditing或的委托功能,searchBar:textDidChange然后当您对用户输入的字符数感到满意时,您将开始您的NSURLConnection请求

于 2012-11-07T20:54:42.853 回答
1

在您要调用搜索功能的功能中(在您单击后的情况下)

实现这个:

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

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

于 2012-11-07T20:54:55.097 回答