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

时间:2013-12-10 12:32:51

标签: ios iphone uisearchbar uisearchdisplaycontroller

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

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

以下是我的观点:

enter image description here

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

1 个答案:

答案 0 :(得分:5)

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

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

要正确制作动画,只需覆盖 searchBarTextDidBeginEditing searchBarTextDidEndEditing ,如下所示:

- (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; }];
}

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