Самый простой способ настроить UITableView для отображения скрытия UIKeyboard - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть UITableView с несколькими UITableViewCell с. Каждая ячейка содержит UITextfield. Нажатие textFields вызывает отображение клавиатуры. К сожалению, клавиатура закрывает некоторые ячейки, расположенные ниже на экране iPhone.

Какой самый простой способ прокрутки tableView вверх при отображении клавиатуры?

Я экспериментировал с contentOffset. Это работает для фактической прокрутки tableView. Однако у меня возникают проблемы с определением, какая ячейка является «активной» (имеет textField, который в настоящее время является первымResponder). Мое приложение поддерживает как книжную, так и альбомную ориентацию, поэтому при вращении устройства иногда необходимо прокручивать tableView.

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Простой способ отследить, какой textField в данный момент активен, - установить его свойство tag для строки indexPath на cellForRowAtIndexPath:

Другой способ - использовать эту строку:

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[textField convertPoint:textField.frame.origin toView:self.tableView]];

on textFieldShouldBeginEditing: для того, когда textField становится активным, или для ваших обратных вызовов вращения для того, когда устройство вращается, а затем прокрутите tableView с помощью scrollToRowAtIndexPath:atScrollPosition:animated:

1 голос
/ 05 марта 2012

Я пишу приложение с похожей проблемой.Способ обработки отслеживания первого респондента или активного UITextField заключается в использовании обратного вызова.Я вызываю метод, используя UIControlEvent UIControlEventEditingDidBegin .

Где я устанавливаю UITextField:

[self.nameUnitNumberField addTarget:self.textFieldDelegate action:@selector(handleEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin];

Затем в классе делегата я устанавливаю текущее текстовое поле:

- (void)handleEditingDidBegin:(id)sender
{
    self.currentNameField = (UITextField *)sender;
}

Кажется, это работает хорошо.Это также позволяет избежать использования тегов.Я слышал, что есть потенциальные проблемы с ним, и лучше всего избегать его, когда он не нужен.

Когда у вас есть активный UITextField, вы можете использовать либо contentInset, и scrollToRowAtIndex: как описано здесь: Получите UITableView для прокрутки до выбранного UITextField и избегайте того, чтобы его скрывали клавиатура

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...