当键盘隐藏时,如何阻止UITableView显示搜索栏
我有一个UITableView,在表头有一个搜索栏。我正在调用ViewWillDisplay中的setContentOffset,它会将其隐藏在顶部。但是,无论何时显示然后隐藏键盘,例如在详细视图中编辑某些字段时,搜索栏都会重新出现。可能是由于UITableView的默认行为导致它根据键盘事件进行自我调整 是否有任何方法可以防止tableView向下滚动。我曾尝试将相同的setContentOffset放在keyboardDidHide{}中,但它似乎会将tableView偏移太多。理想情况下,我不希望在tableView中看到任何移动当键盘隐藏时,如何阻止UITableView显示搜索栏,uitableview,uisearchbar,Uitableview,Uisearchbar,我有一个UITableView,在表头有一个搜索栏。我正在调用ViewWillDisplay中的setContentOffset,它会将其隐藏在顶部。但是,无论何时显示然后隐藏键盘,例如在详细视图中编辑某些字段时,搜索栏都会重新出现。可能是由于UITableView的默认行为导致它根据键盘事件进行自我调整 是否有任何方法可以防止tableView向下滚动。我曾尝试将相同的setContentOffset放在keyboardDidHide{}中,但它似乎会将tableView偏移太多。理想情况下,
- (void) viewWillAppear:(BOOL)animated {
LOG(@"viewWillAppear: called");
[super viewWillAppear:animated];
[self.tableView setContentOffset:CGPointMake(0, 44)];
}
希望有一个比我想出的更优雅的答案 我只是在键盘隐藏之前获取contentOffset,获取搜索栏,将其从标题中删除,然后在键盘隐藏后将其全部放回。不幸的是,这并不能阻止空行的动画,但它确实阻止了包含内容的行向下移动,然后再向上移动
- (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];
}