Question

I possède une vue de table groupée qui contient 3 sections et chaque ligne par section. Les deux premières lignes de la section contient UITextField (nom et sujet sont les titres de section) et le dernier contient UITextView (message est le titre de la section) parce que je veux obtenir des données de l'utilisateur par ce contrôleur lui-même.

Les deux champs de texte ont le returnKeyType comme UIReturnKeyNext. Pour UITextView, le bouton « retour » est présent dans le clavier pour alimenter la nouvelle ligne. Donc, je l'ai utilisé la méthode textFieldShouldReturn pour naviguer à la cellule suivante en appuyant sur ces boutons de type de retour dans UIKeyboard.

Le bouton suivant fonctionnera très bien avec le premier champ de texte (Nom). Ici, le problème est ... Si je clique sur le bouton Suivant de seconde cellule, il va à la UITextView (dernière cellule) avec une ligne vers le bas. Autrement dit, le curseur se déplace d'une ligne en dehors de sa position d'origine.

Mon code est ...

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

Que dois-je faire pour faire ce travail bien? Merci à l'avance ..

Était-ce utile?

La solution

En testant beaucoup de choses que je trouve une solution simple et adaptée:

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

    return YES;
}

Il gère la démissionnant du nameTextField lui-même et retourne NON à la demande.

Autres conseils

En fait ce qui se passe est que lorsque le retour est tapoté faire vue texte le premier répondeur et le retour est ajouté à la vue du texte. Cest pourquoi le curseur passe à la deuxième ligne. Essayez de faire cela dans votre textViewDidChange: méthode déléguée:

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

ce lien vous sera obtenir la solution de votre problème. Dans ce étant donné que la façon dont nous cachons clavier lorsque le texte édité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top