Указание UITextField стать первым респондентом, пока он встроен в UITableViewCell - PullRequest
47 голосов
/ 14 ноября 2009

У меня есть UITextField, который является подпредставлением UITableViewCell.

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

[myTextField becomeFirstResponder];

Это возвращает NO все время, независимо от того, когда оно вызывается, что в соответствии с документами означает, что текстовое поле отказалось стать первым респондентом ... Что я делаю неправильно?

Edit:

textfield правильно реагирует на прикосновения. Затем поднимите клавиатуру. Проблема возникает только при программном сообщении becomefirstresponder.

Ответы [ 5 ]

43 голосов
/ 01 февраля 2010

Оказалось, что текстовое поле было ноль, когда я пытался отправить его первым респондентом. Отправка becomeFirstResponder позже в жизненном цикле сработала.

8 голосов
/ 05 января 2010

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

Предполагая, что в методе cellForRowAtIndexPath вы указали текстовое поле, вы можете сделать что-то вроде этого:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

myTextField = (UITextField *)[cell viewWithTag:kMyTextFieldTag];
[myTextField becomeFirstResponder];
}
5 голосов
/ 24 апреля 2014

Вызов его в - (void) viewDidLoad будет работать.

-(void)viewDidLoad{
   [super viewDidLoad];
   // Do any additional setup after loading the view.
   [self.myTextField becomeFirstResponder] 

   //... any other code you need 
}
1 голос
/ 10 мая 2010

Я не получал курсор, чтобы показать, когда UITextField был сделан первым респондентом внутри cellForRowAtIndexPath. Текстовое поле будет работать просто отлично, но оно не показывает мигающий курсор внутри поля. Когда вы нажимаете и удерживаете, увеличение масштаба также не показывает курсор.

Я обошел эту странную проблему, установив becomeFirstResponder внутри метода didSelectRowAtIndex.

0 голосов
/ 14 ноября 2009

Ваше свойство UITableView editing установлено на YES?

...