Как отключить живой поиск в UISearchBar - PullRequest
2 голосов
/ 24 апреля 2011

Я реализовал SearchBar, используя UIViewController, UISearchBarDelegate, UISearchDisplayDelegate, и когда поиск выполняется, моя программа отправляет http-запрос на сервер, а затем анализирует тело ответа.И это приведет к задержке панели поиска на несколько секунд после ввода каждого символа.

Поэтому я хочу отключить «живой поиск» панели поиска, чтобы он не выполнял поиск каждый раз, когда я набираюперсонаж.А также я хочу выполнить поиск и отобразить данные в виде таблицы, когда я нажимаю кнопку «Поиск» на клавиатуре.Что я могу сделать?

1 Ответ

1 голос
/ 24 апреля 2011

звонок [self.searchDisplayController.searchResultsTableView reloadData]; только после того, как ваш поисковый запрос был выполнен, и выполняйте поисковый запрос только при вызове делегата - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar.

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{

    DLog(@"search text is %@",searchBar.text);

    [self makeSearchRequest:searchBar.text];
}

-(void)makeSearchRequest:(NSString*)pString
{
    CLLocation *location = [[AppHelper appDelegate] mLatestLocation];

    NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];
    [paramDic setValue:[[AppHelper mDataManager] objectForKey:_KEY(KEY_USERID)] forKey:@"userid"];
    [paramDic setValue:@"H0001" forKey:@"client"];
    [paramDic setValue:[[AppHelper mDataManager] objectForKey:_KEY(KEY_LOCATION_ID)] forKey:@"locationid"];
    [paramDic setValue:@"0" forKey:@"pageid"];
    [paramDic setValue:@"10" forKey:@"displayrecords"];
    //  [paramDic setValue:[[dic objectForKey:@"birthday"] stringByReplacingOccurrencesOfString:@"/" withString:@"-"] forKey:@"dateofbirth"];
    **[paramDic setValue:pString forKey:@"keyword"];**




    [self.mWNetowrk makeRequsetWithURL:URL_SEARCH type:ReqSearch paramDictionary:paramDic delegate:self];
    [paramDic autorelease];
}

-(void)network:(WNetwork*)network didFinishLoadingWithRequest:(NSInteger)pReq data:(NSMutableDictionary*)pData
{
    [self removeLoader  ];

    switch (pReq) {

        case ReqSearch:
            self.mArrayPlaces = [pData objectForKey:@"places"];
            [mPlacesCacheArray release];
            mPlacesCacheArray=nil;
            if (!mPlacesCacheArray) {

                mPlacesCacheArray =[NSMutableArray new];
                for (int i =0 ; i<[mArrayPlaces count]; i++) {
                    [mPlacesCacheArray addObject:[NSNull null]];

                }
            }

            [self.searchDisplayController.searchResultsTableView reloadData];

            break;

        default:
            break;
    }

}
...