UISearchBar не отображает Scope Bar - PullRequest
5 голосов
/ 28 августа 2010

Я использую следующий код для отображения UISearchBar с панелью области действия.

UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 45)];
searchBar.barStyle = UIBarStyleDefault;
searchBar.showsCancelButton = NO;
searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;

searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"One", @"Two", nil];
searchBar.showsScopeBar = YES;

self.tableView.tableHeaderView = searchBar;

[searchBar release];

Однако панель области никогда не отображается. Почему он не отображается и как я могу это исправить?

Ответы [ 3 ]

7 голосов
/ 28 августа 2010

в initWithFrame:CGRectMake(0, 0, 320, 45), высота - это только высота панели поиска, не включая панель области действия.Попробуйте заменить что-то вроде:

UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 90)];
1 голос
/ 27 мая 2013
(void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)
 controller{  
    _searchBar.showsScopeBar = YES;
    [_searchBar sizeToFit];
}
0 голосов
/ 20 декабря 2013

Если у вас нет UISearchDisplayController, вы можете попробовать использовать UISearchBarDelegate обратные вызовы:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
  self.searchBar.showsScopeBar = YES;
  [self.searchBar sizeToFit];
  return YES;
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
  self.searchBar.showsScopeBar = NO;
  [self.searchBar sizeToFit];
}
...