web-dev-qa-db-fra.com

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

Je veux avoir un clavier avec un bouton Suivant, Précédent et Terminé dessus.

Je l'ai vu dans de nombreuses applications.

Surtout là où il y a des formulaires à remplir.

enter image description here

Je veux réaliser quelque chose de similaire au clavier ci-dessus

Comment puis-je l'obtenir?

64
Parth Bhatt

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

J'espère que cela t'aides !

60
Ermiar

Je viens de créer une classe appelée BSKeyboardControls qui rend très facile l'ajout des contrôles à un clavier. La classe, les instructions et l'exemple de code peuvent être trouvés ici sur GitHub .

Les commandes fonctionnent pour les champs de texte et les affichages de texte et sont optimisées pour iPhone et iPad.

25
simonbs
-(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];

}
19
user2021443

J'ai une classe utilitaire qui fait essentiellement cela pour vous.

https://github.com/kalvish21/CustomKeyboard

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

6
KVISH

https://github.com/hackiftekhar/IQKeyboardManager

C'est le meilleur gestionnaire de clavier que j'ai vu jusqu'à présent. Très excellent moyen de gérer les entrées de texte.

Certaines de ses fonctionnalités 1) ZERO LINE OF CODE

2) Fonctionne automatiquement

3) Plus de UIScrollView

4) Plus de sous-classes

5) Plus de travail manuel

6) Plus de # importations

4
i.AsifNoor

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 passes précédentes et suivantes autour du premier Répondeur des champs textField et Terminé feront la démission ainsi que masqueront la barre d'outils.

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

1
Nick Weaver

J'ai créé un référentiel avec une implémentation de cette fonctionnalité qui fonctionne sur iPhone/iPad dans toutes les orientations et hautement personnalisable.

0
wzbozon

Comme mentionné dans d'autres réponses, c'est le inputAccessoryView que vous recherchez.

Je voudrais ajouter une manière alternative ici, en utilisant ces cocoapods:

pod ' ITextField-Navigation '

Tous les UITextField auront deux propriétés supplémentaires: nextTextField et previousTextField. Vous pouvez ensuite simplement connecter le nextTextField dans le générateur d'interface et les boutons Précédent, Suivant et Terminé sont ajoutés automatiquement pour vous, tous fonctionnels, plus de code n'est nécessaire, pas de sous-classement.

Vous pouvez également personnaliser l'interface utilisateur, ajouter plus de boutons, etc. comme vous le souhaitez.

enter image description hereenter image description here

0
Thanh Pham