代码之家  ›  专栏  ›  技术社区  ›  Joshua

uisearchbar不显示范围栏

  •  5
  • Joshua  · 技术社区  · 15 年前

    我使用以下代码显示 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 回复  |  直到 12 年前
        1
  •  7
  •   Felixs    15 年前

    initWithFrame:CGRectMake(0, 0, 320, 45) ,高度仅为搜索栏的高度,不包括范围栏。尝试替换为以下内容:

    UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 90)];
    
        2
  •  1
  •   JOM agenthunt    12 年前
    (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)
     controller{  
        _searchBar.showsScopeBar = YES;
        [_searchBar sizeToFit];
    }
    
        3
  •  0
  •   JOM agenthunt    12 年前

    如果没有可用的uisearchdisplaycontroller,可以尝试使用 ui搜索bardelegate 回调:

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