2013-10-14 9 views
13

Hier ist ein Video der Phänomene ist: http://youtu.be/c0TP8YVF9TEUITextField Text verschwindet auf jedem anderen Tastendruck

Wie das Video zeigt, wird der Wert in exampleTextView.text nicht verloren. Es ist nur jeden zweiten Tastendruck versteckt.

Lösungsversuche: Ich setze den exampleTextView.text-Wert während des Programms nicht auf etwas, außer nach dem Drücken der Eingabetaste (und das Kommentieren dieser Zeile ändert nichts).

Ich habe ein:

self.exampleTextView.clearsOnBeginEditing=NO; 
self.exampleTextView.clearsContextBeforeDrawing=NO; 
self.exampleTextView.clearsOnInsertion=NO; 

Edit: Hier ist mein Code: https://gist.github.com/andrewschreiber/6970283

+1

Ich denke Community Leute können Ihnen helfen, wenn Sie uns Ihren Code zeigen. –

+0

@Andrew Schreiber, Bitte laden Sie Ihr Projekt hoch, damit die Leute die exakte Lösung finden können. –

Antwort

31

Ich hatte fast das gleiche Problem. Manchmal verschwand der Text.

Ich löste es nach dem Ändern der Position des UITextField in der Ansichtshierarchie in der XIB-Datei.

enter image description here

+0

das ist verrückt, wie es nur durch Schalterstellungen funktioniert –

+0

Verrückt aber wahr, löste es mein Problem auch! – Berik

+1

Das ist sehr seltsam. Nur um dies zu verdeutlichen behebt dies das Problem, wenn Sie in 'viewWillAppear'' findResponse' nennen wollen. Die untenstehenden Antworten funktionieren ebenso, indem Sie den Aufruf auf "viewDidAppear" verschieben. – WCByrne

0

versuchen, alle Delegierten Methode von UITextField zu verwenden. und bitte lassen Sie mich wissen, was Sie mit Done Button geklickt tun, nur den Text von etwas anderes setzen oder wenn Sie den ganzen Code mit mir teilen, dann kann ich Ihnen helfen

Bitte ersetzen Sie Ihre TextFieldShouldReturn Methode mit meiner Methode und Auch die Implementierung der TextFieldShouldBeginEditing-Methode in Ihrem Code und seine Arbeit gut

-(BOOL) textFieldShouldReturn:(UITextField *) textField { 

      [textField resignFirstResponder]; 
    } 


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 


    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 


    [UIView commitAnimations]; 

    return YES; 


} 
+1

Ich habe dies versucht, beide mit 'zurück YES' und 'return NO' in textFieldShouldReturn. Das hat das Problem nicht gelöst, aber gab mir einige Ideen, um es zu versuchen. –

0

Das Problem gelöst.

In meinem Storyboard habe ich den Text von 'Plain' auf 'Attributed' und dann wieder auf 'Plain' umgestellt.

+0

Diese Lösung hat bei mir nicht funktioniert. Die andere Lösung von SbClx tat es. – nst

+0

Ok, richtige Antwort geändert, da andere das gleiche Ergebnis zu haben scheinen. –

11

ich das gleiche Problem gegenüberstand. Meine Lösung war [_textField becomeFirstResponder] von der - (void)viewWillAppear:(BOOL)animated Methode zu entfernen. Dieser Fehler tritt nur auf, wenn der Viewcontroller modal präsentiert wurde.

+0

Ja, wenn Sie möchten, dass das Textfeld first responder als in viewDidAppear anstelle von viewWillAppear erstellt wird. Dein Problem wird gelöst. –

2

die UITextField ‚s becomeFirstResponderviewWillAppear-viewWillLayoutSubviews dies für meinen Fall Verschieben fixiert. Ich stellte auch sicher, dass die Aktionen, die die Ansicht verwarfen (die modal präsentiert wurde) UITextField um resignFirstResponder ergänzt wurden.

+1

Ich musste es sogar in viewDidAppear platzieren. Ansonsten ergab sich ein unsichtbarer Text. – wolfrevo

0

@SbClx 's Lösung funktioniert für mich, aber ich habe eine andere Problemumgehung, die auch funktioniert: Stellen Sie den Hintergrund des UITextField zu jedem beliebigen UImage Sie mögen.

Nach ein paar Versuchen und Fehler, fand ich, dass der Fehler verschwindet, wenn ich den borderStyle von UITextField auf UITextBorderStyleRoundedRect, was leider nicht was ich wollte, möchte ich einen einfachen weißen Hintergrund.

Die Dokumentation von UITextField.borderStyle besagt Folgendes: Wenn der Wert auf den UITextBorderStyleRoundedRect-Stil festgelegt ist, wird das benutzerdefinierte Hintergrundbild ignoriert, das dem Textfeld zugeordnet ist. Also ich denke, Hintergrundbild könnte auch etwas mit dem Fehler zu tun haben.

Verwandte Themen