#objective-c
#objective-c
Вопрос:
У меня есть UITableView, который состоит из пользовательских ячеек. Существует 21 ячейка, содержащая текстовые поля.
Когда я пытаюсь прокрутить и отредактировать ячейки внизу UITableView, мне не удается правильно расположить свои ячейки над клавиатурой.
Также я создал пользовательский класс ячеек отдельно для своих ячеек. Таким образом, делегаты клавиатуры доступны только для этого класса.
Я видел много ответов, в которых говорилось об изменении размеров представления и т. Д… но пока ни один из них не работал хорошо.
Может ли кто-нибудь уточнить «правильный» способ сделать это с конкретным примером кода?
Комментарии:
1. вы пробовали использовать класс uitableviewcontroller, который автоматически обрабатывает эти вещи…..
Ответ №1:
Существует три подхода к этой проблеме, все из которых связаны с тем, что клавиатура показала / покажет уведомление….
- При появлении клавиатуры вы перемещаете все представление (включая tableview) вверх, чтобы убедиться, что выбранное текстовое поле отображается на экране, вы можете рассчитать это, получив высоту клавиатуры (из уведомления) и положение текстового поля.
- Вы можете изменить размер tableview так, чтобы он был размером только с ту часть экрана, которая не закрыта клавиатурой, и снова получить высоту из уведомления.
- Вы можете установить вставку содержимого для tableview (для нижнего значения) на высоту клавиатуры.
Если вам нужно, при изменении размера или изменении положения tableview, вам может потребоваться настроить его на прокрутку содержимого до прямоугольника текстового поля, чтобы убедиться, что оно находится в поле зрения…
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
Комментарии:
1. спасибо, чувак, но клавиатура появляется в классе ячеек табличного представления, который содержит только представление содержимого, а не весь вид. есть ли какой-либо метод, который вызывается для каждой ячейки для строки
2. Клавиатура — это глобальное представление, поэтому, даже если оно вызывается текстовым полем в ячейке, вы можете просматривать уведомления клавиатуры из любого места, где вам нравится, в данном случае из контроллера представления, который содержит вашу таблицу.