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

时间:2012-11-07 20:49:46

标签: ios xcode uisearchbar

我想创建一个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];
        }
    });

3 个答案:

答案 0 :(得分:3)

我最近对类似的问题做了回答,你可以找到它here

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

实现这个:

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

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