wake-up-neo.com

die Taste "Weiter" der iOS-App geht nicht zum nächsten Textfeld

Ich habe eine einfache Szene (mit Storyboard in IB) mit einem Textfeld Benutzername und Passwort. Ich habe die Tastatur so eingestellt, dass sie sich schließt, wenn Sie sich im Kennwortfeld befinden, aber die nächste Schaltfläche (Zurück) kann nicht angezeigt werden, um den Benutzernamen zu ändern, um den Fokus (oder den Ersthelfer) auf das Kennwortfeld zu ändern.

Ich schließe die Tastatur, während Sie sich im Kennwortfeld wie folgt befinden:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == self.textPassword) {
    [theTextField resignFirstResponder];
}
return YES;
}

Ich weiß, dass es so ähnlich ist, aber ich kann es nicht festnageln.

40
BamBamBeano

Die Return-Taste hat in einem Textfeld standardmäßig nichts Besonderes. Sie müssen den Ersthelfer explizit ändern:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    if (theTextField == self.textPassword) {
        [theTextField resignFirstResponder];
    } else if (theTextField == self.textUsername) {
        [self.textPassword becomeFirstResponder];
    }
    return YES;
}
88
rob mayoff

Ich verwende diesen Code, mit dem ich das Formularverhalten im Storyboard steuern kann :

-(BOOL) textFieldShouldReturn:(UITextField *)textField{
    if(textField.returnKeyType==UIReturnKeyNext) {
        UIView *next = [[textField superview] viewWithTag:textField.tag+1];
        [next becomeFirstResponder];
    } else if (textField.returnKeyType==UIReturnKeyDone) {
        [textField resignFirstResponder];
    }
    return YES;
} 

Sie müssen lediglich den Auftragswert als tag und returnkey gemäß Next oder Done in jedem Eingabesteuerelement zuweisen.

40
Esteve

für diejenigen, die Swift language verwenden möchten: 

class MyClass: UIViewController, UITextFieldDelegate {

@IBOutlet weak var text1: UITextField!
@IBOutlet weak var text2: UITextField!
@IBOutlet weak var text3: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    text1.delegate = self
    text2.delegate = self
    text3.delegate = self


}

//....

func textFieldShouldReturn(textField: UITextField) -> Bool{
    if textField == self.text1 {
        self.text2.becomeFirstResponder()
    }else if textField == self.text2{
        self.text3.becomeFirstResponder()
    }else{
        self.text1.becomeFirstResponder()
    }
    return true
 }

 //...

}

:-)

11
N3tMaster

Sie müssen das UITextFieldDelegate in der Header-Datei hinzufügen .. _. Dann müssen Sie festlegen

theTextField.delegate = self;

in der viewDidLoad-Methode . Danach können Sie fortfahren

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    if (theTextField == self.textPassword) {
        [theTextField resignFirstResponder];
    } else if (theTextField == self.textUsername) {
        [self.textPassword becomeFirstResponder];
    }
    return YES;
}
9
FTFT1234

Es gibt viele Lösungen für dieses Problem. Sehen Sie sich die Antworten zu dieser Frage an: Navigation in Textfeldern (Schaltflächen Next/Done) .

Weitere Informationen finden Sie in der UIResponder-Klassenreferenz .

5
sherbondy

Folgendes würdest du sagen:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    if (theTextField == self.textPassword) {
        [theTextField resignFirstResponder];
    } else if (theTextField == self.usernameField) {
        [self.textPassword becomeFirstResponder];
    }
return YES;
}
3
bryanjclark

Hier ist eine Swift 2.0-Version von Rob Mayoff

func textFieldShouldReturn(textField: UITextField) -> Bool {
    if textField == self.emailTextField {
        self.passwordTextField.becomeFirstResponder()
    }else{
        self.passwordTextField.resignFirstResponder()
    }
    return false
}
0
egeelabs

Ich habe ein Problem, dass das Passwort-Textfeld den Fokus erhält und dann sofort den Fokus verliert. Zum Schluss habe ich festgestellt, dass wir besser NO in der Funktion textFieldShouldReturn: zurückgeben. Wenn wir YES zurückgeben, erhält das Textfeld einen insertText: -Aufruf. Dann wird es den Fokus verlieren. Den Grund nicht kennen.

Ich habe eine neue Frage für dieses Problem erstellt: UITextField erhalten den Fokus und verlieren sofort den Fokus, da in textFieldShouldReturn JA zurückgegeben wird

Wenn jemand den Grund kennt, lass es mich wissen. Vielen Dank.

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    if (theTextField == self.textPassword) {
        [theTextField resignFirstResponder];
    } else if (theTextField == self.textUsername) {
        [self.textPassword becomeFirstResponder];
    }
    // we'd better return NO here
    return NO;
}
0
Harrison Xi

Sie können diese Unterklasse von UITextfield verwenden, um den UIReturnKey dynamisch gemäß der Text-/Zeichenfolge-Bedingung zu ändern, und führen Sie dann die Folgeaktion in dem textField-Delegat textFieldShouldReturn: (UITextField *) aus

if (textField.returnKeyType == UIReturnKeyNext)

https://github.com/codeinteractiveapps/OBReturnKeyTextField
0
CodeInteractive