单击搜索栏后,UISearchBar即消失

时间:2014-05-27 06:49:32

标签: ios objective-c uitableview uisearchbar uisearchdisplaycontroller

我搜索了有关UISearchBar的所有其他问题,似乎没有回答我的问题。我在顶部有一个导航视图,有一个UISearchBar的桌面视图。当我点击搜索栏时,tableview会变暗,键盘会出现,但uisearchbar消失了。如果我点击黑暗的桌面视图,键盘将被解除,黑暗消失,UISearchBar重新出现。知道为什么它会消失吗?

这里有一些扩展UITableViewController的类中的代码:

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 44)];
searchBar.delegate = self;
searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchDisplayController.delegate = self;
searchDisplayController.searchResultsDataSource = self;
searchDisplayController.searchResultsDelegate = self;
//[self.tableView insertSubview:self.searchDisplayController.searchBar aboveSubview:self.tableView];
self.tableView.tableHeaderView = searchDisplayController.searchBar;

在我的.h文件中,我采用了这些原型:`但我没有实现任何方法,除了:

- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView
{
[tableView registerClass:[EmailCell class] forCellReuseIdentifier:mailCellIdentifier];
}

已编辑:

我故意将tableview进一步向下移动,以便顶部导航视图和tableview之间有空格,发现搜索栏没有消失,当点击UISearchBar时,它在屏幕上向上移动,占据我加入的空白。有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

添加此方法

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
    if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
        [self.tableView insertSubview:self.searchDisplayController.searchBar aboveSubview:self.tableView];
    }
}

有关详细信息,请查看此link