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.
Je veux réaliser quelque chose de similaire au clavier ci-dessus
Comment puis-je l'obtenir?
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 !
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.
-(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];
}
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.
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
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?"
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.
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.