【问题标题】:How to turn off live search in UISearchBar如何在 UISearchBar 中关闭实时搜索
【发布时间】:2011-04-24 10:53:12
【问题描述】:

我已经使用 UIViewController、UISearchBarDelegate、UISearchDisplayDelegate 实现了一个 SearchBar,当搜索执行时,我的程序向服务器发送一个 http 请求,然后解析响应正文。这将导致在输入每个字符后搜索栏延迟几秒钟。

所以我想关闭搜索栏的“实时搜索”,这样每次我输入一个字符时它就不会执行搜索。当我单击键盘的“搜索”按钮时,我还想执行搜索并将数据显示到 tableview。我能做什么?

【问题讨论】:

    标签: iphone ios uisearchbar


    【解决方案1】:

    致电[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;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多