64 votes

Comment obtenir un clavier avec les boutons Suivant, Précédent et Terminé ?

Je souhaite disposer d'un clavier surmonté d'un bouton Suivant, Précédent et Terminé.

J'ai vu cela dans de nombreuses applications.

Surtout lorsqu'il y a des formulaires à remplir.

enter image description here

Je veux obtenir quelque chose de similaire au clavier ci-dessus

Comment puis-je obtenir ça ?

60voto

Ermiar Points 831

Vous trouverez la réponse sur cet autre poste . J'ai vérifié la bibliothèque iOS et le inputAccessoryView d'un UITextField est exactement ce que vous recherchez !

J'espère que cela vous aidera !

0 votes

Ou on peut le faire en utilisant le storyboard comme aquí

25voto

simonbs Points 2875

Je viens de créer une classe appelée BSKeyboardControls ce qui permet d'ajouter très facilement les commandes à un clavier. La classe, les instructions et le code d'exemple se trouvent à l'adresse suivante ici sur GitHub .

Les contrôles fonctionnent pour les champs de texte et les vues de texte et sont optimisés pour l'iPhone et l'iPad.

0 votes

Je viens de découvrir BSkeyboardControls et je l'adore ! J'ai besoin qu'il fonctionne avec un UIDatePicker au lieu d'un textfield. Un exemple de code pour cela ?

19voto

user2021443 Points 111
-(BOOL)textFieldShouldBeginEditing: (UITextField *)textField 

{
     UIToolbar * keyboardToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];

    keyboardToolBar.barStyle = UIBarStyleDefault;
    [keyboardToolBar setItems: [NSArray arrayWithObjects:
                                [[UIBarButtonItem alloc]initWithTitle:@"Previous" style:UIBarButtonItemStyleBordered target:self action:@selector(previousTextField)],

                                [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStyleBordered target:self action:@selector(nextTextField)],
                                [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                                [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)],
                                nil]];
    textField.inputAccessoryView = keyboardToolBar;

}

- (void)nextTextField {

    if (textField1) {

        [textField1 resignFirstResponder];
        [textField2 becomeFirstResponder];

    }

}

-(void)previousTextField
{

    if (textField2) {
        [textField2 resignFirstResponder];
        [textField1 becomeFirstResponder];
    }

}

-(void)resignKeyboard {

    [textField1 resignFirstResponder];
    [textField2 resignFirstResponder];

}

0 votes

Merci pour l'idée/le concept... Je vais devoir faire quelques changements.

0 votes

Je veux utiliser ce code pour 9 champs de texte donc je fais ceci if (textField1) { [textField1 resignFirstResponder] ; [textField2 becomeFirstResponder] ; } 9 fois pour des champs de texte différents mais ça ne marche pas pourquoi ?

5voto

KVISH Points 1826

J'ai une classe utilitaire qui fait ça pour vous.

https://github.com/kalvish21/CustomKeyboard

L'idée est très simple. Vous devez ajouter une barre d'outils accessoire avec des boutons de barre dessus. Il y a un délégué qui définit où ce bouton va faire.

1voto

Nick Weaver Points 30418

Il s'agit d'un contrôle personnalisé qui est placé directement au-dessus du clavier. Je pense qu'une UIToolbar peut être utilisée pour cela.

Les passages précédents et suivants autour du firstResponder des textFields et Done feront la démission ainsi que le masquage de la barre d'outils.

Pour faire correspondre l'animation du clavier, regardez ce code J'ai trouvé ou à SO : "Quel est le taux d'animation par défaut du clavier de l'iPhone ?"

0 votes

Oui, j'ai essayé quelque chose de similaire, mais lorsque je clique sur la boîte de texte, la barre d'outils apparaît immédiatement et le clavier apparaît en dessous, ce qui donne l'impression qu'ils sont séparés. Cela semble séparé. Je veux que le clavier et la barre d'outils s'affichent ensemble en bas de l'écran. Que dois-je faire ?

0 votes

Utilisez un bloc d'animation correspondant au clavier.

0 votes

Merci pour votre contribution. Je suis novice en matière d'animation. Comment utiliser le bloc d'animation correspondant avec le clavier ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X