Pergunta

Eu quero editar o nome do usuário dentro de um UITableView. Eu adicionei um UITextField ao UITableViewCell e isso parece funcionar muito bem. Mas quando o usuário toca o celular (mesmo fora do campo de texto), ele espera que a edição.

Como faço para programaticamente selecionar o campo de texto?

O código seria algo parecido com:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName.selected = TRUE;
}
Foi útil?

Solução

- (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];

}

Isso pressupõe que você não tem mais rápido maneira de saber qual objeto UITextField é em qual célula, e que você sabe com certeza que o UITextField será o primeiro subexibição.

Você também pode querer colocar em um cheque de [textField isFirstResponder] - nenhum ponto em tornando-o o firstResponder se ele já é. Isto pode não ser que necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top