Estoy tratando de hacer eso durante un par de días, y después de leer toneladas de mensajes de personas que intentan hacer eso también, todavía no puedo tener un trabajo completo UITextField
en algunos de mis UITableViewCells
, al igual que en este ejemplo:
O tengo el formulario funcionando pero el texto no es visible (aunque configuré su color en azul), el teclado aparece en el campo cuando hago clic en él y no he podido implementar correctamente los eventos del teclado. Intenté con un montón de ejemplos de Apple (principalmente UICatalog
, donde hay un control un poco similar) pero todavía no funciona correctamente.
¿Alguien puede ayudarme (y todas las personas que intentan realizar este control) y publicar una implementación simple de a UITextField
en a UITableViewCell
, que funciona bien?
CGRectMake(A_MAGIC_NUMBER, ANOTHER_MAGIC_NUMBER, YET_ANOTHER_HARDCODED_MAGIC_NUMBER, OH_HERES_ANOTHER_MYSTERIOUS_HARDCODED_MAGIC_NUMBER)
? ¿De dónde vienen esos números?Respuestas:
Probar esto. Funciona como un encanto para mí (en dispositivos iPhone). Usé este código para una pantalla de inicio de sesión una vez. Configuré la vista de tabla para tener dos secciones. Por supuesto, puede deshacerse de la sección condicionales.
El resultado se ve así:
fuente
[_field addTarget:self action:@selector(editingEnded:) forControlEvents:UIControlEventEditingDidEnd];
.[cell addSubview:playerTextField];
para que funcione con iOS 5.0+.Aquí hay una solución que se ve bien en iOS6 / 7/8/9 .
Actualización 2016-06-10: esto todavía funciona con iOS 9.3.3
Gracias por todo su apoyo, ahora está en CocoaPods / Carthage / SPM en https://github.com/fulldecent/FDTextFieldTableViewCell
Básicamente hacemos el inventario
UITableViewCellStyleValue1
y grapamos un lugarUITextField
dondedetailTextLabel
se supone que debe estar. Esto nos brinda una ubicación automática para todos los escenarios: iOS6 / 7/8/9, iPhone / iPad, Imagen / Sin imagen, Accesorio / Sin accesorio, Retrato / Paisaje, 1x / 2x / 3x.Nota: esto está usando el guión gráfico con una
UITableViewCellStyleValue1
celda de tipo llamada "palabra".fuente
UITableViewCellStyleRightDetail
qué te refieresUITableViewCellStyleValue1
?Así es como lo he logrado:
TextFormCell.h
TextFormCell.m
Puede parecer un poco detallado, ¡pero funciona!
¡No olvide configurar el delegado!
fuente
Prueba este. También puede manejar el desplazamiento y puede reutilizar las celdas sin la molestia de eliminar las subvistas que agregó anteriormente.
fuente
Esto no debería ser difícil. Al crear una celda para su tabla, agregue un objeto UITextField a la vista de contenido de la celda
Establezca el delegado de UITextField como self (es decir, su controlador de vista). Dé una etiqueta al campo de texto para que pueda identificar qué campo de texto se editó en sus métodos de delegado. El teclado debería aparecer cuando el usuario toca el campo de texto. Lo tengo funcionando así. Espero eso ayude.
fuente
CGRectZero
como un marco, asegúrese de configurar el marco de su campo de texto antes de agregarlo a la jerarquía de vistas. Obtener laframe
propiedad de la vista de contenido de la celda es especialmente útil para tal tarea.Detalles
Código de muestra completo
Resultado
fuente
Había estado evitando esto llamando a un método para que se ejecutara
[cell.contentView bringSubviewToFront:textField]
cada vez que aparecían mis células, pero luego descubrí esta técnica relativamente simple:No parece tener el mismo problema de traspaso de fondo, y se alinea por sí solo (algo). Además, textLabel se trunca automáticamente para evitar desbordarse (o debajo), lo cual es útil.
fuente
Tuve el mismo problema. Parece que establecer la
cell.textlabel.text
propiedad lleva el UILabel al frente de contentView de la celda. Agregue textView después de la configuracióntextLabel.text
, o (si eso no es posible) llame a esto:fuente
Realmente luché con esta tarea en el iPad, con campos de texto que se muestran invisibles en UITableView, y toda la fila se vuelve azul cuando se enfoca.
Lo que funcionó para mí al final fue la técnica descrita en "La técnica para el contenido de filas estáticas" en la Guía de programación de vista de tabla de Apple . Puse la etiqueta y el campo de texto en un UITableViewCell en el NIB para la vista, y extraigo esa celda a través de una salida
cellForRowAtIndexPath:
. El código resultante es mucho más ordenado que UICatalog.fuente
Así es como se hace, creo que la forma correcta. Funciona en Ipad y Iphone cuando lo probé. Tenemos que crear nuestras propias CustomCells clasificando una uitableviewcell:
comience en interfaceBuilder ... cree un nuevo controlador UIView, llámelo customCell (voluntario para un xib mientras esté allí) Asegúrese de que customCell sea una subclase de uitableviewcell
borre todas las vistas ahora y cree una vista para que sea del tamaño de una celda individual. haga que esa vista sea de la subclase customcell. ahora cree otras dos vistas (duplique la primera).
Vaya a su inspector de conexiones y encuentre 2 IBOutlets que puede conectar a estas vistas ahora.
-backgroundView -SelectedBackground
conéctelos a las dos últimas vistas que acaba de duplicar y no se preocupe por ellas. la primera vista que extiende customCell, coloca tu etiqueta y uitextfield dentro de ella. entró en customCell.h y conectó su etiqueta y campo de texto. Establezca la altura de esta vista para decir 75 (altura de cada celda) todo listo.
En su archivo customCell.m, asegúrese de que el constructor se vea así:
Ahora cree un UITableViewcontroller y en este método use la clase customCell de esta manera:
}
fuente
Aquí hay una subclase para la
UITableViewCell
cual reemplaza detailTextLabel con un editableUITextField
(o, en el caso deUITableViewCellStyleDefault
, reemplaza textLabel ). Esto tiene la ventaja de que le permite reutilizar todos los estilos UITableViewCellStyles, accesoriosViews, etc. conocidos, ¡justo ahora el detalle es editable!Fácil de usar: simplemente cree su celda como antes, pero ahora use cell.textField en lugar de cell.detailTextLabel (o cell.textLabel en el caso de
UITableViewCellStyleDefault
). p.ejInspirado y mejorado por la respuesta de FD
fuente
Para los eventos siguientes / de retorno en múltiples UITextfield dentro de UITableViewCell en este método, tomé UITextField en el guión gráfico.
Para tomar el texto del campo de texto
fuente