更改搜索栏的位置

时间:2015-05-19 14:48:02

标签: ios objective-c uitableview uisearchbar

我在表格的标题中有一个搜索栏,但它非常低,当键盘出现时,搜索不可见。当搜索栏太低而且不可见时,如何在表格中滚动?否则我不想改变它的位置。

以下是截图: enter image description here

如果我更改搜索栏的框架,我会得到:

enter image description here

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {


    if (self.searchBar.frame.origin.y>270) {
        self.cowTableView.frame=CGRectMake(self.cowTableView.frame.origin.x,self.cowTableView.frame.origin.y-300,self.cowTableView.frame.size.width, self.cowTableView.frame.size.height);}


    return YES;
}

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
    self.cowTableView.frame=CGRectMake(self.cowTableView.frame.origin.x,self.cowTableView.frame.origin.y+300,self.cowTableView.frame.size.width, self.cowTableView.frame.size.height);
    return YES;
}

1 个答案:

答案 0 :(得分:1)

首先,您必须采用UISearchBar上的UISearchBarDelegate Protocol,在该协议中,您需要两种委托方法来确定用户何时使用表格中的UISearchBar开始和结束查看标题。

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
    //Called when user clicks search bar
    return YES;
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
    return YES;
}

您需要确定UISearchBar在屏幕上的位置,因为我假设您始终希望它位于屏幕上的(0,0)。要执行此操作,请调用rectForRowAtIndexPath:以获取表格视图中单元格的当前y位置。获得y位置后,您必须确定表格视图的当前偏移量,并使用该值设置UISearchBar的位置

//Determine the position of the cell relative to the screen origin
CGRect cellRect = [tableView rectForRowAtIndexPath:indexPath];
cellRect = CGRectOffset(cellRect, -self.tableView.contentOffset.x, -self.tableView.contentOffset.y);

现在cellRect将包含正确的值,您可以在表格视图上调用setContentOffset:animated:

[self.tableView setContentOffset:CGPointMake(cellRect.origin.x, self.tableView.contentOffset.y - cellRect.origin.y ) animated:YES];

现在,您的UISearchBar将位于屏幕顶部。

相关问题