2012-06-25 10 views
6

Creo que esto es extraño, hice mi propia clase que hereda de UIAlertView. En esta clase agrego una UITableView como subvista y las celdas contienen un UILabel y un UITextField.UITextField: no se puede escribir texto, pero los emoticones, copiar/pegar y retroceder están bien

los implementos de clase: UITableViewDelegate, UITableViewDataSource y UITextFieldDelegate,

En el cellForRowAtIndexPath cada cell.uiTxtField.delegate se establece en uno mismo.

sucede lo siguiente tanto en el simulador y en el dispositivo iPhone real:

  • Cuando fijo el puntero/dedo en el UITextField aparezca el teclado y textFieldDidBeginEditing se activa, que está muy bien y como se esperaba.

  • Cuando salgo del UITextField, textFieldDidEndEditing se dispara, que también está bien y como era de esperar.

  • Pero cuando empiezo a escribir texto, el cursor deja de parpadear pero no se escribe texto en UITextField.

  • que pueda copiar y pegar texto manteniendo pulsado el puntero/dedo en un UITextField que contiene texto, seleccione copiar y pegarlo en otro UITextField (o el mismo).

  • El retroceso funciona bien.

  • También me permite escribo en símbolos y emoticones etc.

  • La única cosa que no puedo escribir es caracteres/letras y números

  • El botón de retorno no lo hace gatillo textFieldShouldReturn

Desde textFieldDi dBeginEditing y textFieldDidEndEditing se activan Supongo que la configuración de mi delegado está bien, pero no puedo entender por qué no puedo escribir texto y por qué textFieldShouldReturn no se activa.

This puede estar relacionado.

Cualquier ayuda es apreciada.

+0

tengo el mismo problema ... cualquiera sabe la solución por favor ayúdalo – Anju

Respuesta

0

¿Has puesto esto en el método "init" de tu clase personalizada?

trate de poner un código como este en su archivo de aplicación ...

@implementation CustomAlertClass <UITextFieldDelegate> 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
    // 
    self.YourTextField.delegate = self; 
} 
return self; 
} 

@end 
0

Respuesta corta: Asegúrese de que usted no tiene ningún código que se mete con la propiedad 'editar' en UITextField.

que tenían los mismos síntomas en los que estaba definitivamente establecer el delegado correctamente y textFieldDidBeginEditing y textFieldDidEndEditing estaban siendo llamado, pero textFieldShouldReturn y shouldChangeCharactersInRange no estaban recibiendo llamada. Tampoco podía escribir ningún carácter, pero podía copiar pegar en el campo de texto. En mi caso, también estaba colocando los campos de texto dentro de las celdas en una UITableView. Mi situación era un poco diferente ya que el botón Eliminar no funcionaba.

Donde me equivoqué, era que no estaba usando un UITextField sin formato en mis celdas, tenía mi propia subclase de UITextField. Mi subclase tenía una propiedad 'isEditing', que estaba modificando en los métodos UITextFieldDelegate y se usa para descubrir cómo desplazar la vista de tabla cuando se selecciona el campo de texto. Esto estaba anulando el método 'isEditing' en UITextField con se usa como el getter para la propiedad 'editing' de UITextField. Una vez que me deshice de mi subclase isEditing propiedad, todo se comportó como se esperaba.

Cuestiones relacionadas