Frage

Ich habe eine gruppierte Tabellenansicht, die 3 Abschnitte und jede Zeile pro Abschnitt enthält. Die ersten beiden Abschnittzeilen enthält UitextField (Name und Betreff sind die Abschnittstitel) und die letzte enthält UitextView (Nachricht ist der Abschnittstitel), da ich einige Daten vom Benutzer durch diesen Controller selbst abrufen möchte.

Die beiden Textfelder haben den ReturnKeyType als UireturnKeynext. Für UitextView ist die Schaltfläche "Rückgabe" in der Tastatur vorhanden, um eine neue Zeile zu füttern. Deshalb habe ich die TextfieldshouldReturn -Methode verwendet, um zur nächsten Zelle zu navigieren, indem ich diese Rückgabetasten in Uikeyboard drückte.

Die nächste Schaltfläche funktioniert gut mit dem ersten Textfeld (Name). Hier kommt das Problem ... Wenn ich auf die nächste Schaltfläche der zweiten Zelle klicke, geht es mit einer Zeile nach unten zum UitextView (letzte Zelle). Das heißt, der Cursor bewegt eine Linie von seiner ursprünglichen Position ab.

Mein Code ist ...

-(BOOL) textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    if (textField == nameTextField) {
        [subjectTextField becomeFirstResponder];    
    }
    else if(textField == subjectTextField) {
        [messageTextView becomeFirstResponder];
    }
    return YES;
}

Was soll ich tun, um diese Arbeit gut zu machen? Vielen Dank im Voraus..

War es hilfreich?

Lösung

Während ich eine Menge Dinge testete, fand ich eine einfache, aber geeignete Lösung:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if ( [textField isEqual: nameTextField] )
    {
        [nameTextField resignFirstResponder];
        [messageTextView becomeFirstResponder];
        return NO;
    }

    return YES;
}

Es übernimmt den Rücktritt des Nametextfield selbst und kehrt Nein zur Anfrage zurück.

Andere Tipps

Grundsätzlich geschieht, dass Sie bei der Rückgabe die Textansicht zum Ersthelfer machen und die Rückkehr zur Textansicht hinzugefügt wird. Deshalb geht der Cursor in die zweite Zeile. Versuchen Sie dies in Ihrer TextViewDidChange: Delegate -Methode:

- (void)textViewDidChange:(UITextView *)textView {
        if(textView.text == @"\r") {
        textView.text = @"";
}

Im dieser Link Sie erhalten eine Lösung Ihres Problems. In diesem Sinne, wie wir die Tastatur ausblenden, wenn die Textbearbeitung ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top