Вопрос

Я хочу изменить имя пользователя в UITableView. Я добавил UITextField в UITableViewCell, и это, кажется, работает очень хорошо. Но когда пользователь касается ячейки (даже за пределами текстового поля), он ожидает редактирования.

Как программно выделить текстовое поле?

Код будет выглядеть примерно так:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName.selected = TRUE;
}
Это было полезно?

Решение

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   UITableViewCell *cellSelected = [tableView cellForRowAtIndexPath: indexPath];
   UITextField *textField = [[cellSelected.contentView subviews] objectAtIndex: 0];
   [textField becomeFirstResponder];

   [tableView deselectRowAtIndexPath: indexPath animated: NO];

}

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

Вы также можете захотеть поставить галочку для [textField isFirstResponder] - нет смысла делать его firstResponder, если он уже есть. Это не может быть необходимым, хотя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top