Search code examples
iphoneobjective-ccocoa-touchnstimeruisearchbar

How to detect a pause in input for UISearchBar/UITextField?


I have the following UISearchbar code:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    NSString* endpoint =[NSString stringWithFormat:@"http://www.someurl/",
                         [searchText stringByReplacingOccurrencesOfString:@" " withString:@"+"]];
    NSURL* url = [NSURL URLWithString:endpoint];
    NSURLRequest* request = [NSURLRequest requestWithURL:url];
    GTMHTTPFetcher* myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];
    [myFetcher beginFetchWithDelegate:self didFinishSelector:@selector(searchResultsFetcher:finishedWithData:error:)];
}

I want to send this request after a pause in input and reset the timer everytime a character is hit. How can I do this?


Solution

  • It doesn't have to use NSTimer.

    - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
            {
               [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(request) object:nil];
    
              //.....
    
               [self performSelector:@selector(request) withObject:nil afterDelay:yourpausetime];
    
            }