Ya casi termino de implementar un UITableViewCell
con un UITextField
en él. En lugar de pasar por CGRectMake
y UITableViewCell.contentView
he implementado de la manera más simple:UITableViewCell con UITextField perdiendo la posibilidad de seleccionar la fila UITableView?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell"];
[cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
amountField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 190, 30)];
amountField.placeholder = @"Enter amount";
amountField.keyboardType = UIKeyboardTypeDecimalPad;
amountField.textAlignment = UITextAlignmentRight;
amountField.clearButtonMode = UITextFieldViewModeNever;
[amountField setDelegate:self];
[[cell textLabel] setText:@"Amount"];
[cell addSubview:amountField];
return cell;
}
Y entonces yo también implementado el método didSelectRow
, renunciando el campo de texto para permitir que muestra los otros campos vistas de entrada.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[amountField resignFirstResponder];
...
}
Esto funciona sin problemas, lo único es que hay otras filas de la tabla, cuando esos otros son seleccionados se selecciona toda la célula y se vuelve azul, mientras que el uno con mi UITextField no lo hace, me refiero al campo está seleccionado y puedo ingresar texto pero la celda no está seleccionada. Lo he probado y descubierto el problema está en la línea:
[cell addSubview:amountField];
Parece que esto rompe el comportamiento celular seleccionable, e incluso agregarlo a [cell contentView]
no soluciona esto. ¿Me he perdido algo?
Si establece 'userInteractionEnabled = NO;' esto no sería hacer que el UITextField no editable? –
Aparentemente no: he seguido el consejo de EmptyStack y he establecido [amountField setUserInteractionEnabled: NO]; al principio del método DidSelectRow, y luego [amountField setUserInteractionEnabled: YES] solo cuando la fila seleccionada es la que tiene el campo de texto. La selección ahora está bien, pero tengo que tocar dos veces en la fila para ingresar texto ... –
@micpringle, por supuesto. No puede hacer que tanto el campo de texto como la celda respondan cuando el campo de texto llena la celda. – EmptyStack