2013-10-21 70 views
0

我有一個UITableView與表頭中的searchBar。我在viewWillAppear中調用setContentOffset,使其隱藏在頂部。但是,無論何時鍵盤顯示然後隱藏,例如在詳細視圖中編輯某些字段時,searchBar會再次出現。也許是由於UITableView的默認行爲來響應鍵盤事件而自行調整的結果。如何停止UITableView顯示searchBar時隱藏鍵盤

有什麼辦法可以防止tableView向下滾動。我曾嘗試在keyboardDidHide {}中放置相同的setContentOffset,但似乎過多地偏移了tableView。理想情況下,我不希望在tableView中看到任何動作。

- (void) viewWillAppear:(BOOL)animated { 
    LOG(@"viewWillAppear: called"); 
    [super viewWillAppear:animated]; 
    [self.tableView setContentOffset:CGPointMake(0, 44)]; 
} 

回答

0

希望有一個比我提出的更優雅的答案。

我只是在鍵盤隱藏自己之前獲取contentOffset,獲取searchBar,將其從標題中移除,然後在隱藏鍵盤後將其全部移回。不幸的是,這並不妨礙空行的動畫,但它確實阻止了內容向下移動然後備份的行。

- (void)keyboardWillHide:(NSNotification *)n 
{ 
    LOG(@"keyboardWillHide: called"); 
    _contentOffset = self.tableView.contentOffset; 
    _searchBar = (UISearchBar*)self.tableView.tableHeaderView; 
    self.tableView.tableHeaderView = nil; 
} 
- (void)keyboardDidHide:(NSNotification *)n 
{ 
    LOG(@"keyboardDidHide: called"); 
    self.tableView.tableHeaderView = _searchBar; 
    [self.tableView setContentOffset:_contentOffset animated:NO]; 
}