将UISearchBar锁定到UITableView的顶部

我想要得到这样的行为:我有一个UISearchBar,它是我的tableview的表头视图。 滚动表格时,搜索栏确实会移动,但如果您在表格边界之上滚动,搜索栏将永不停止触摸导航栏。

我在这里找到了一个很好的答案 - 将UISearchBar锁定到像Game Center这样的UITableView的顶部但是它不适用于iOS 6 - 使用表视图标题框操作不起作用

这可能是什么原因?


我找到了一个解决方案,可以在iOS 6或更低版本上运行

创建UITableView的子类并重写layoutSubviews方法

- (void)layoutSubviews
{
    [super layoutSubviews];
    CGRect rect = self.tableHeaderView.frame;
    rect.origin.y = MIN(0, self.contentOffset.y);
    self.tableHeaderView.frame = rect;
}

如果您使用以下内容:

[_tableView setTableHeaderView:_searchBar];

当您将表格视图滚动到第一行之外时,搜索栏应该也会消失而不是粘在视图的顶部。

没有看到你的代码,我只能假设你可能已经将UISearchBar添加为段标题而不是表头了?


那是因为iOS6 sdk在滚动时不更新,也许同样优化。 因此需要在滚动时调用tableview layoutSubviews。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{
    UISearchBar *searchBar = searchDisplayController.searchBar;
    CGRect rect = searchBar.frame;
    rect.origin.y = MIN(0, scrollView.contentOffset.y);
    [scrollView layoutSubviews];
    searchBar.frame = rect;
}
链接地址: http://www.djcxy.com/p/55965.html

上一篇: Locking a UISearchBar to the top of a UITableView

下一篇: Locking a UISearchBar to the top of a UITableView like Game Center