Ответ 1
Оказалось, что текстовое поле было нулевым, когда я пытался отправить его первым ответчиком.
Отправка becomeFirstResponder
позже в течение жизненного цикла.
У меня есть UITextField, который является подзадачей UITableViewCell.
Когда мой просмотр загружается, я хочу, чтобы текстовое поле стало первым ответчиком. У меня есть указатель на текстовое поле в ячейке таблицы, поэтому для этого я пытаюсь:
[myTextField becomeFirstResponder];
Это возвращает NO
все время, независимо от того, когда оно вызвано, что согласно документам означает, что текстовое поле отказалось стать первым ответчиком... Что я делаю неправильно?
Edit:
Текстовое поле правильно реагирует на касание. Тогда он поднимает клавиатуру. Это только когда вы говорите ему, чтобы он стал первым ответчиком программным путем, что проблема происходит.
Оказалось, что текстовое поле было нулевым, когда я пытался отправить его первым ответчиком.
Отправка becomeFirstResponder
позже в течение жизненного цикла.
У меня была та же проблема с текстовым полем, которое я добавил в качестве подзаголовка в ячейку сгруппированной таблицы, но выяснил решение после того, как выкалывал.
Предполагая, что вы дали текстовому полю тегу в методе 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];
}
Вызов его в - (void) viewDidLoad будет работать.
-(void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.myTextField becomeFirstResponder]
//... any other code you need
}
Я не получал курсор, чтобы отображаться, когда UITextField
был сделан первым ответчиком внутри cellForRowAtIndexPath
. Текстовое поле будет работать только отлично и денди, но оно не показывало мигающий курсор внутри поля. Когда вы нажмете и удерживаете, увеличение масштаба также не отобразит курсор.
Я обошел эту нечетную проблему, установив мой becomeFirstResponder
внутри метода didSelectRowAtIndex
.
Является ли ваше свойство UITableView editing
равным YES
?