繁体   English   中英

更改搜索栏的位置

[英]Change position for search bar

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

这是屏幕截图: 在此处输入图片说明

如果我更改搜索栏的框架,则会得到以下信息:

在此处输入图片说明

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

首先,你必须采用UISearchBarDelegate协议上你UISearchBar ,该协议之内,你将需要两个委托方法来确定用户何时开始和使用结束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: cellRect

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM