Sheehan Alam Sheehan Alam - 1 year ago 107
Objective-C Question

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?

Answer Source

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];

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download