Вызовите веб-сервис, когда каждая клавиша нажата в iphone - PullRequest
0 голосов
/ 15 августа 2011

Я использую панель поиска, и всякий раз, когда я ввожу текст в панель поиска, она должна взять эту строку, и она сформирует строку запроса и выдаст результат. чтобы отобразить названия городов, начинающиеся с c, и после этого, когда «c» все еще присутствует в строке поиска, я нажимаю «h», поэтому теперь строка «ch», поэтому с помощью веб-службы я ищу названия городов, которые начинаются с «ch» «Я использую веб-сервис JSON, и ответ заполняется в табличном представлении

Моя проблема в том, что когда я медленно нажимаю клавиши, поиск выполняется правильно, но когда клавиши нажимаются быстро, то есть когда я нажимаю «c», а затем быстро нажимаю «h». Доступ к веб-сервису осуществляется по «ch» 'then' c '.. Это заставляет печатать города, начинающиеся с c вместо CH ..

Я вызываю веб-сервис при каждом нажатии клавиши следующим образом:

оператор для вызова веб-службы внутри

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchString {

....

...
 [NSThread detachNewThreadSelector: @selector(callService) toTarget:self withObject:nil];
}

and inside the callService method.....

- (void)callService{
    NSAutoreleasePool *pool = [ [ NSAutoreleasePool alloc ] init ];
    [self performSelectorOnMainThread:@selector(initializeRequest) withObject:nil waitUntilDone:NO]; 
    [pool release];

}

- (void)initializeRequest {


....Here i form the request string...
create connection and after creating connection i use NSURLConnectionDelegate Methods to parse the connection
}

Есть ли способ беспрепятственного поиска на лету.

Пожалуйста, любое тело предложит мне любую другую альтернативу или подход для выполнения такого поиска на лету, когда текст будет изменен в строке поиска. Спасибо вам всем и каждому

1 Ответ

3 голосов
/ 15 августа 2011

Следите за своими соединениями, и когда вы формируете новый запрос, сначала отмените старое соединение.

[prevURLConnection cancel];
...