Попытка сделать пользовательский UITableViewCell с UITextField становиться становящимся ответчиком при редактировании - PullRequest
1 голос
/ 20 января 2012

У меня есть UITableViewController с пользовательскими UITableViewCell s, которые содержат UITextField. При переключении табличного представления в режим редактирования я добавляю новую ячейку внизу таблицы и хочу сделать эту ячейку becomeFirstResponder. Мой метод tableView:cellForRowAtIndexPath: проверяет эту нижнюю ячейку, поэтому я просто добавил строку:

[cell.theTextField intoFirstResponder];

Который, по моему мнению, должен работать. Однако, когда табличное представление впервые отображается, оно, кажется, не работает. НО, если я выберу ячейку (сделав ее первым респондентом), а затем выйду из режима редактирования (вызывая resignFirstResponder в моем коде), я смогу затем вернуться в режим редактирования и волшебным образом он станет первым респондентом, как я и ожидал !

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

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

У кого-нибудь есть идеи относительно того, что здесь может происходить?

1 Ответ

1 голос
/ 20 января 2012

Первый becomeFirstResponder вызов не удался, потому что у ячейки еще нет суперпредставления. Табличное представление добавляет ячейку как свое подпредставление после того, как вы вернете ее из tableView:cellForRowAtIndexPath:. Я предлагаю вам сделать этот звонок в другом месте. Если у вас уже есть пользовательский подкласс UITableViewCell, вы можете реализовать didMoveToWindow: и вызвать [self becomeFirstResponder] там.

...