Проблемы с набором содержимого UITableView после исчезновения UIKeyboard из последнего текстового поля

#objective-c #uitableview #ios7

#objective-c #uitableview #ios7

Вопрос:

У меня есть табличное представление, и как только uikeyboard отклоняет последнее текстовое поле с помощью клавиши возврата, наборы содержимого табличного представления, похоже, становятся неуместными.

Здесь ячейки табличного представления правильно совпадают с этим фрагментом кода

 self.edgesForExtendedLayout = UIRectEdgeAll;
self.tableView.contentInset = UIEdgeInsetsMake(0.0, 0.0, CGRectGetHeight(self.navigationController.toolbar.frame)   5.0, 0);
 

Первая ячейка, показывающая правильное выравнивание

Тогда вот последняя ячейка

Последняя ячейка, показывающая правильное выравнивание

Затем я нажимаю на последнее текстовое поле в представлении, и для выравнивания ячейки по верхней части клавиатуры я должен использовать этот код

 [self.tableView setContentInset:UIEdgeInsetsZero];
 

Установка набора содержимого по умолчанию

Теперь, когда я отключаю клавиатуру, первая ячейка выглядит так

Плохое выравнивание первой ячейки

И последняя ячейка выглядит так

Последнее выравнивание ячейки

Если я добавлю этот код, когда клавиатура будет отключена, первая ячейка будет выглядеть как первое изображение, что хорошо, но из-за этого последняя ячейка выглядит еще хуже, поскольку нижняя часть представления составляет половину пятой ячейки (всего десять ячеек).). Если кто-нибудь может помочь, я был бы очень признателен. Спасибо.

 [self.tableView setContentInset:UIEdgeInsetsMake(self.navigationController.navigationBar.bounds.size.height   [[UIApplication sharedApplication] statusBarFrame].size.height, 0.0, 0.0, 0.0)];
 

Ответ №1:

Итак, я понял это, получив высоту клавиатуры и панели инструментов и обновив набор содержимого в созданном мной пользовательском методе.

 [self.tableView setContentInset:UIEdgeInsetsMake(self.navigationController.navigationBar.bounds.size.height   [UIApplication sharedApplication].statusBarFrame.size.height, 0.0, keyboardHeight   5.0, 0.0)];
 

На всякий случай, если кто-то сочтет это полезным, я установил уведомление в viewDidLoad

 [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(getKeyboardHeight:)
                                             name:UIKeyboardDidShowNotification
                                           object:nil];
 

Затем в моем getKeyboardHeight методе

 keyboardHeight = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size.height;
keyboardHeight  = self.navigationController.toolbar.frame.size.height;