6

Penso che questo sia strano, ho creato la mia classe che eredita da UIAlertView. In questa classe aggiungo UITableView come sottoview e le celle contengono UILabel e UITextField.UITextField: non è possibile digitare testo ma faccine, copia/incolla e backspace va bene

gli strumenti di classe: UITableViewDelegate, UITableViewDataSource e UITextFieldDelegate,

Nel cellForRowAtIndexPath ogni cell.uiTxtField.delegate è impostato su di sé.

Quanto segue avviene sia nel simulatore e sul reale dispositivo iPhone:

  • Quando ho creato il puntatore/dito nel UITextField la tastiera si apre e textFieldDidBeginEditing viene attivato, va bene e come previsto.

  • Quando lascio l'UITextField, textFieldDidEndEditing viene attivato, che è anche bene e come previsto.

  • Tuttavia, quando si inizia a digitare del testo, il cursore smette di lampeggiare ma il testo non viene digitato in UITextField.

  • posso copia ed incolla testo tenendo premuto il puntatore/dito in un'UITextField che contiene il testo, selezionare copia e incollarlo in un altro UITextField (o lo stesso).

  • Il backspace funziona correttamente.

  • Esso permetterà anche di me scriv dentro simboli e faccine ecc

  • L'unica cosa che non riesco a digitare è caratteri/lettere e numeri

  • Il pulsante di ritorno non lo fa grilletto textFieldShouldReturn

Dal textFieldDi dBeginEditing e textFieldDidEndEditing vengono attivati. Presumo che la configurazione dei delegati sia corretta, ma non riesco a capire perché non riesco a digitare il testo e perché textFieldShouldReturn non viene attivato.

This potrebbe essere correlato.

Qualsiasi aiuto è apprezzato.

+0

ho lo stesso problema..una persona conosce la soluzione per favore aiutatela – Anju

risposta

0

hai inserito questo nel metodo "init" della tua classe personalizzata?

provare a mettere un codice come questo nel file di implementazione ...

@implementation CustomAlertClass <UITextFieldDelegate> 

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

@end 
0

Risposta breve: Assicurarsi non si dispone di alcun codice che pasticci con la 'modifica' proprietà su UITextField.

ho avuto gli stessi sintomi in cui ero sicuramente impostare il delegato correttamente e textFieldDidBeginEditing e textFieldDidEndEditing sono stati sempre chiamato, ma textFieldShouldReturn e shouldChangeCharactersInRange non sono stati sempre chiamato. Inoltre non potevo digitare alcun carattere, ma potevo copiare incolla nel campo di testo. Nel mio caso mi è capitato anche di inserire i campi di testo all'interno delle celle in un UITableView. La mia situazione era leggermente diversa in quanto il pulsante Elimina non funzionava.

Dove ho sbagliato, era che non stavo usando un UITextField grezzo nelle mie celle, avevo la mia sottoclasse di UITextField. La mia sottoclasse aveva una proprietà 'isEditing', che stavo modificando nei metodi UITextFieldDelegate e utilizzata per capire come scorrere la vista tabella quando il campo di testo era selezionato. Questo stava sovrascrivendo il metodo 'isEditing' su UITextField con viene usato come getter per la proprietà 'edit' di UITextField. Una volta che mi sono liberato della mia sottoclasse, la proprietà di EdEditing si è comportata come previsto.