Как видите, моя прокрутка UITableView
максимальная, но моя таблица не полностью видна. Зачем? Я использую UITableViewController
UISearchController не перемещает мой UITableView вверх
2
A
ответ
0
с помощью уведомлений может быть самый простой способ, чтобы получить высоту клавиатуры, как я откомментировал установить contentInset
свойство для прокрутки TableView над клавиатурой, когда он скрывает набор к нулю насекомых,
- (void)viewWillAppear:(BOOL)animate {
[super viewWillAppear:animate];
// Do any additional setup after loading the view.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardShown:)
name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
//remove notifications
}
- (void)keyboardShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
float height = keyboardRect.size.height;
tableView.contentInset = UIEdgeInsetsMake(10, 0, height, 0);
}
- (void)keyboardHidden:(NSNotification*)aNotification
{
[UIView animateWithDuration:0.2 animations:^{
table.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
}];
}
1
Я рекомендую просто скрыть клавиатуру, как только пользователь начнет прокрутку. Apple реализует это поведение в своих приложениях. Чтобы сделать это, добавьте в вашем контроллере представления таблицы:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[self.searchBar resignFirstResponder];
}
Это требует searchBar
свойства, которое заполняется строкой поиска.
4
Хорошая альтернатива для ответа Ortwin является использование keyboardDismissMode
свойство UIScrollView
:
tableView.keyboardDismissMode = .OnDrag
набор это, как только появится клавиатура 'tableView.contentInset = UIEdgeInsetsMake (10, 0, 200, 0);' и после клавиатуры (0, 0, 0, 0); ' –
Знаете ли вы, как получить высоту клавиатуры? Потому что высота отличается для обеих ориентаций. Без использования уведомлений? Возможно ли использовать текущую видимую клавиатуру? –