iPad popover textfield - resignFirstResponder nicht entlassen Tastatur
Ich habe zwei text-Felder E-Mail und Passwort. Der folgende code funktioniert einwandfrei, wenn die Felder sind auf einer regulären anzeigen, aber wenn Sie sind auf einem popover, das resignFirstResponder funktioniert nicht (becomeFirstResponder funktioniert). textFieldsShouldReturn hieß für beide Felder.
Jede Idee, wenn ich bin fehlt etwas?
Danke!
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == email) {
[password becomeFirstResponder];
return NO;
}
[theTextField resignFirstResponder];
return NO;
}
- Klingt wie ein bug. Ich würde vorschlagen, Einreichung eines Berichts an bugreport.apple.com.
- Habe das gleiche problem, wenn die Felder mit Sternchen sind in einem modalen view mit modalPresentationStyle = UIModalPresentationFormSheet
- Ich erlebe diesen Fehler so gut.
- Finden stackoverflow.com/questions/3372333/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen diese Frage:
Überschreiben
disablesAutomaticKeyboardDismissal
zurückNO
als unter einer festen das gleiche problem von mir. Sie sollten diesen code auf Ihre view-controller, aus dem Sie initiieren die Tastatur:Wie beschrieben in diese Antwort, die Tastatur wird manchmal bleiben auf dem Bildschirm, wenn die Ansicht präsentiert, mit der UIModalPresentationFormSheet Stil.
Bin ich mir auch nicht sicher, aber so wie ich das verstehe die responder-Hierarchie, zurücktreten würde nur funktionieren, wenn Sie haben einige andere responder zu beantworten.
In einem regulären anzeigen, die Ansicht selbst ist bereit. In einem popup-Fenster, vielleicht müssen Sie etwas tun, um Ihren popup-Klasse (wie implementieren Sie einige Responder-Methoden), um für diese zu arbeiten.
War ich auch mit diesem problem. Aber ich löste dies durch eine andere Kontrolle, welche nicht in der popover, wie
firstResponder
und später resigniert Sie es von dort. Aber ich weiß nicht, was ist das problem mit popover.Die Antwort ist, die als eine mögliche Lösung für andere mit einem ähnlichen problem, aber wo die herkömmlichen Maßnahmen nicht funktionieren.
In der Zusammenfassung -
Ich hatte ein ähnliches problem (unter einer bestimmten Bedingung) und alles versucht - ohne Erfolg - in meiner Liste der möglichen Lösungen war [obj ist resignFirstResponder], die das überschreiben von 'disablesAutomaticKeyboardDismissal" für meine view-controller, [self.Ansicht endEditing:YES]; und ein paar andere Dinge.
Ging über die Bestimmung, die [id] von der aktuellen first-responder, nur zu entdecken, dass es war null. Antippen von "Fertig" auf der Tastatur oder mithilfe einer der oben beschriebenen Methoden haben nichts - die Tastatur blieb - auch nach dem klicken auf ein anderes Eingabefeld.
Der Bildschirm war im wesentlichen ein ViewController mit einem UITableView mit einem text-input-Feld in jeder Zelle - 7 oder 8 insgesamt. Tippen Sie auf eine beliebige Zelle bringen würde bis die Tastatur wie erwartet und durch Tippen auf eine separate Schaltfläche 'Weiter' (ausblenden der Tastatur plus andere Bearbeitung) funktionierte wie erwartet.
Aber im landscape-Modus, das Letzte Feld war bedeckt von der Tastatur erfordert den Tisch geblättert werden, um zu zeigen, wie.
Nach dem scrollen und Tippen auf das Letzte Eingabefeld, die Tastatur konnte nicht entlassen werden, egal was. Die einzige Arbeit, um das scrollen der Tabelle wieder unter die Tastatur, dann Tippen Sie auf die Schaltfläche 'weiter'. Es macht keinen Sinn.
Fast an dem Punkt aufzugeben (und die Implementierung eines workaround), der Lösung gearbeitet wurde, um das Letzte Eingabefeld der firstResponder (obwohl es bereits ein blinkender cursor) und dann zu resignFirstResponder danach.
So;
`-(void) actionNext {
}`
das problem behoben - in der Erwägung, dass [m_arrInputFields objectAtIndex:#alle anderen index#] nicht!
Wäre toll, wenn jemand kann Klarheit schaffen oder eine Erklärung für diese sonst - ich hoffe das spart jemand anderes ein paar Stunden Arbeit!