2015-05-19 69 views
1

我在表格的標題中有一個搜索欄,但它非常向下,當出現鍵盤時,搜索不可見。如果搜索欄太低且不可見,我該如何在表格中進行滾動?否則我不想改變它的位置。更改搜索欄的位置

下面是截圖: 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

首先,你必須採用UISearchBarDelegate ProtocolUISearchBar ,在該協議中,您將需要兩種委託方法來確定用戶何時開始使用表格視圖中的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將位於屏幕的頂部。

+0

您的ideea適用於更改框架,但爲什麼搜索欄的大小發生更改。我沒有修改大小,只有原點。 –

+0

@AdinaMarin也許你正在把它移得太高,它似乎像搜索欄大小改變?如果你沒有修改標題或搜索欄的大小,它不應該改變。 – Michael

+0

我用代碼更新我的問題 –