当我点击它时,UISearchBar会进入视图的顶部

Erz*_*iel 5 iphone uisearchbar uisearchdisplaycontroller ios

我有一个UITableView,它无法到达整个视图.近似地,UITableView比视图小两倍.

然后,我将"搜索栏和搜索显示控制器"添加对象库中的UITableView .因此,为了可视化,searchBar出现在屏幕的中心.

这是我的观点:

在此输入图像描述

我的问题:当我点击搜索字段进行我的研究时,searchBar将转到视图的顶部,代替导航栏!过渡非常糟糕......我如何限制searchBar保持在最初的位置?

Gab*_*ier 5

该问题与搜索显示控制器有关.你无法控制动画,当你的TableView顶部有一个视图时,它似乎无法很好地处理它.我们遇到了同样的问题,我们修复它的最简单方法是通过故事板中的简单搜索栏替换搜索显示控制器.

这意味着您的类现在必须实现搜索栏的委托方法才能正常工作.

要正确设置动画,只需覆盖searchBarTextDidBeginEditingsearchBarTextDidEndEditing,如下所示:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.origin.y = tableViewFrame.origin.y - self.yourHeaderView.bounds.size.height;
[UIView animateWithDuration:0.25
                 animations:^{ self.tableView.frame = tableViewFrame; }];
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.origin.y = tableViewFrame.origin.y + self.yourHeaderView.bounds.size.height;
[UIView animateWithDuration:0.25
                 animations:^{ self.tableView.frame = tableViewFrame; }];
}
Run Code Online (Sandbox Code Playgroud)

简单地说,您只需根据视图的高度将视图框移动到视图上.动画使其更流畅,更清洁.