按下取消按钮后如何保持范围栏?

Mit*_*uzz 3 iphone cancel-button uitableview uisearchbar uisearchdisplaycontroller

我有一个UITableView,顶部有一个搜索栏.我使用UISearchDisplayController来实现相同的功能.它还有一个带两个按钮的示波器栏.默认情况下,当我启动应用程序时,将显示范围栏.当我在搜索后单击取消按钮时,示波器条消失了.因此,即使在我按下"取消"按钮后,还有任何方法可以保留范围栏.我使用了以下代码,但它不起作用.

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsScopeBar:YES];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

Col*_*Col 5

我今天遇到了问题,我想我找到了解决方案.

你需要做两件事:

  1. 设置showsScopeBar后,在searchBar上调用'sizeToFit'.这将确保正确设置searchBars框架以包括范围栏.
  2. 不幸的是,当searchBar调整大小并导致范围栏与第一个单元重叠时,表视图似乎不喜欢它.要解决此问题,您可以将tableHeaderView重新设置为searchBar(再次),这似乎可以解决重叠问题.

最终代码:

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
    self.searchBar.showsScopeBar = YES;
    [self.searchBar sizeToFit];
    self.tableView.tableHeaderView = self.searchBar;
    return YES;
}
Run Code Online (Sandbox Code Playgroud)