2012-06-25 11 views
6

Ich denke, das ist seltsam, ich habe meine eigene Klasse, die von UIAlertView erbt. In dieser Klasse füge ich eine UITableView als Unteransicht hinzu und die Zellen enthalten ein UILabel und ein UITextField.UITextField: Text kann nicht eingegeben werden, aber Smilies, Kopieren/Einfügen und Rückschritt ist in Ordnung

die Klasse implementiert: UITableViewDelegate, UITableViewDataSource und UITextFieldDelegate,

Im cellForRowAtIndexPath jeder cell.uiTxtField.delegate Selbst gesetzt.

passiert Folgendes sowohl im Simulator und auf dem realen iPhone-Gerät:

  • Wenn ich den Zeiger/Finger in den UITextField stellen Sie die Tastatur erscheint und textFieldDidBeginEditing ausgelöst wird, das ist in Ordnung und wie erwartet.

  • Wenn ich die UITextField verlassen wird textFieldDidEndEditing ausgelöst, , die auch gut und wie erwartet ist.

  • Aber wenn ich anfange, Text zu schreiben, hört der Cursor auf zu blinken, aber kein Text wird in das UITextField eingegeben.

  • kann ich Kopieren und Einfügen Textes durch den Zeiger/Finger in einem UITextField gedrückt, den Text, wählt Kopie enthält und fügen Sie dann in einem anderen UITextField (oder gleich). Die Rücktaste funktioniert einwandfrei.

  • Er ließ auch die mich usw.

  • Das einzige, was in Symbole und Smilies Typ I nicht in geben kann, ist Zeichen/Buchstaben und Zahlen

  • Die Taste Rückkehr nicht der Fall ist Trigger textFieldShouldReturn

Seit textFieldDi dBeginEditing und textFieldDidEndEditing wird ausgelöst Ich gehe davon aus, dass mein Delegate-Setup in Ordnung ist, aber ich kann nicht verstehen, warum ich keinen Text eingeben kann und warum textFieldShouldReturn nicht ausgelöst wird.

This könnte verwandt sein.

Jede Hilfe wird geschätzt.

+0

Ich habe das gleiche Problem .. jeder kennt die Lösung bitte helfen Sie es – Anju

Antwort

0

haben Sie dies in der "init" -Methode Ihrer benutzerdefinierten Klasse?

versuchen, einen Code wie dies in Ihrer Implementierungsdatei setzen ...

@implementation CustomAlertClass <UITextFieldDelegate> 

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

@end 
0

Kurze Antwort: Achten Sie darauf, Sie haben keinen Code, der auf UITextField mit der ‚Bearbeiten‘ Eigenschaft verunstaltet.

hatte ich die gleichen Symptome, wo ich definitiv die Delegierten Einstellung war richtig und textFieldDidBeginEditing und textFieldDidEndEditing wurden immer genannt, aber textFieldShouldReturn und shouldChangeCharactersInRange genannt nicht immer wurden. Ich konnte auch keine Zeichen eingeben, aber ich konnte Paste in das Textfeld kopieren. In meinem Fall habe ich zufällig auch die Textfelder in Zellen in einem UITableView eingefügt. Meine Situation war insofern etwas anders, als der Löschen-Button nicht funktionierte.

Wo ich falsch gelaufen bin, war, dass ich kein rohes UITextField in meinen Zellen hatte, ich hatte meine eigene Unterklasse von UITextField. Meine Unterklasse hatte eine Eigenschaft 'isEditing', die ich in den UITextFieldDelegate-Methoden änderte und um herauszufinden, wie man die Tabellenansicht scrollt, wenn das Textfeld ausgewählt wurde. Dies überschreibt die Methode 'isEditing' für UITextField, die als Getter für die Eigenschaft 'Editieren' von UITextField verwendet wird. Sobald ich meine Unterklasse isEditing Eigenschaft los war, verhielt sich alles wie erwartet.