我使用UISearchDisplayController
从我的列表中进行搜索。 但是,当我搜索一个字符,它隐藏searchBar
。 这里是快照之前,我开始搜索:
这隐藏searchBar
是这样的:
#pragma mark - UISearchDisplayController Delegate Methods
//These methods will be used for search controller frame
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];
}
- (void) keyboardWillHide {
UITableView *tableView = [[self searchDisplayController] searchResultsTableView];
[tableView setContentInset:UIEdgeInsetsZero];
[tableView setScrollIndicatorInsets:UIEdgeInsetsZero];
}
- (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.001);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
for (UIView* v in self.searchDisplayController.searchResultsTableView.subviews) {
if ([v isKindOfClass: [UILabel class]] &&
[[(UILabel*)v text] isEqualToString:@"No Results"]) {
[(UILabel *)v setText:NO_RESULT_LABEL_STRING];
// .. do whatever you like to the UILabel here ..
break;
}
}
});
[self handleSearchForTerm:searchString];
return YES;
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
{
[[self dealsTableView] reloadData];
}
#pragma mark Search Method
- (void) handleSearchForTerm:(NSString *) searchString {
//First get all the objects which fulfill the criteria
[[self searchResultsArray] removeAllObjects];
for (Deal *currentDeal in self.dealsArray)
{
NSArray *searchQueryComponents = [searchString componentsSeparatedByString:@" "];
BOOL isGoAheadToAdd=YES;
for (NSString *currentSearchComponent in searchQueryComponents) {
NSString *trimmed = [currentSearchComponent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([trimmed length]>0) {
if ([[currentDeal title] rangeOfString:currentSearchComponent options:NSCaseInsensitiveSearch].location != NSNotFound)
{
isGoAheadToAdd=YES;
}
else {
isGoAheadToAdd=NO;
break;
}
}
}
if (isGoAheadToAdd) {
[[self searchResultsArray] addObject:currentDeal];
}
}
}