Un rapide exemple de Vues Personnalisées pour les Données d'Entrée (personnalisée dans l'application clavier)
Objectif
Je veux faire un clavier personnalisé qui est utilisé uniquement à l'intérieur de mon application, et non un système de clavier qui doit être installé.
Ce que j'ai lu et essayé
Documentation
- App Extension Guide De Programmation: Clavier Personnalisé
- Vues personnalisées pour l'Entrée de Données
L'article premier ci-dessus états:
Assurez-vous personnalisé, à l'échelle du système clavier est en effet ce que vous voulez
développer. Afin de constituer un clavier personnalisé juste pour votre application ou à
compléter le système de clavier personnalisé clés en seulement votre application, le
iOS SDK fournit d'autres, de meilleures options. Lisez à propos de saisie personnalisés vues
et d'entrée de l'accessoire de vues dans des Vues Personnalisées pour l'Entrée de Données dans le Texte
Guide de programmation pour iOS.
C'est ce qui m'a conduit à la deuxième de l'article ci-dessus. Cependant, cet article n'a pas assez de détails pour me faire.
Tutoriels
- iOS 8: la Création d'un Clavier Personnalisé en Swift
- Comment faire un clavier personnalisé dans iOS 8 à l'aide de Swift
- Xcode 6 Tutoriel: iOS 8.0 Simple Clavier Personnalisés en Swift
- La création d'un Clavier Personnalisé à l'Aide de iOS 8 App Extension
J'ai été en mesure d'obtenir un clavier à partir de la deuxième tutoriel dans la liste ci-dessus. Cependant, je ne pouvais pas trouver toutes les tutoriels qui a montré comment faire une application seulement le clavier comme décrit dans la Vues personnalisées pour l'Entrée de Données de la documentation.
Débordement De Pile
J'ai aussi demandé (et a répondu à ces questions sur ma façon de répondre à la question en cours.
- Comment saisir du texte en utilisant les boutons de in-app clavier personnalisé
- Les délégués à Swift
Question
Quelqu'un aurait-il un exemple minimal (même avec un seul bouton) d'une application de clavier personnalisé? Je ne suis pas à la recherche pour l'ensemble d'un tutoriel, juste une preuve de concept que je peux développer sur moi-même.
- Dans combien d'emplois avez-vous à l'entrée avec ce clavier? Si c'est juste une et il n'y a pas beaucoup de choses dans la vue, vous pourriez juste faire le clavier une partie de la vue.
- J'aimerais un jour faire un clavier avec 20 ou 30 boutons. Mais d'abord, je voudrais faire une très simple clavier avec juste un bouton ou deux à apprendre le processus.
Vous devez vous connecter pour publier un commentaire.
C'est une base dans l'application du clavier. La même méthode pourrait être utilisée pour faire juste au sujet de toute disposition de clavier. Voici la liste des principales choses qui doivent être faites:
UIView
sous-classe.UITextField
pour utiliser le clavier personnalisé.Créer la .xib fichier de disposition de clavier
Créer la .swift sous-classe UIView clavier fichier
Ajoutez le code suivant:
De contrôle faites glisser les boutons dans le .xib fichier à la
@IBAction
méthode dans le .swift fichier à crochet tous.Configurer l'Affichage de Contrôleur de
UITextField
principale de votre storyboard et le connecter à votre vue-contrôleur avec unIBOutlet
. AppelertextField
.Utiliser le code suivant pour la Vue-Contrôleur:
Notez que la vue contrôleur adopte le
KeyboardDelegate
protocole que nous avons défini ci-dessus.D'erreur courants
Si vous obtenez une EXC_BAD_ACCESS erreur, c'est probablement parce que vous définissez le point de vue de la classe personnalisée en tant que Clavier.swift plutôt que de le faire pour la plume Propriétaire du Fichier.
Sélectionnez Clavier.plume, puis choisissez Propriétaire du Fichier.
Assurez-vous que la classe personnalisée pour la vue racine est vide.
keyWasTapped
méthode. une idée?@IBAction func keyTapped
appelé? Si non, alors vous n'avez probablement pas le raccordement de la IBActions. Si oui, alors vous avez probablement n'avez pas configuré le délégué correctement.keyTapped
appelé. Pas transmises àkeyWasTapped
méthode du déléguécharacter:
self.delegate?.keyWasTapped(sender.titleLabel!.text!)
envoie "caractère" (qui est unString
, probablement une mauvaise appellation), n'est-ce pas?keyWasTapped
.Bâtiment sur Suragch réponse, j'avais besoin d'un fait et la touche retour arrière et si vous êtes un noob comme moi heres quelques erreurs que vous pouvez rencontrer, et de la façon dont je résolus.
Arriver EXC_BAD_ACCESS erreurs?
J'ai inclus:
fixé mon problème cependant Suragch à jour de réponse semble résoudre ce le plus approprié et de manière correcte.
Arriver SIGABRT Erreur?
Une autre chose stupide a été glisser les connexions dans le mauvais sens, provoquant SIGABRT erreur. Ne faites pas glisser à partir de la fonction pour le bouton, mais plutôt que le bouton de la fonction.
Ajout d'un Bouton Terminé
J'ai ajouté à cela le protocole clavier.swift:
Ensuite connecté une nouvelle IBAction de mon bouton valider pour clavier.swift comme suit:
et puis un bond en arrière à mon viewController.swift où je suis à l'aide de ce clavier et a ajouté ce qui suit après la fonction keyWasTapped:
L'Ajout De La Touche Retour Arrière
Cela s'est déclenché me beaucoup, parce que vous devez définir la zone de texte.délégué à soi-même dans le viewDidLoad (), méthode (présenté plus loin).
Première: clavier.swift ajouter au protocole func retour arrière():
Deuxième: la connexion d'un nouveau IBAction similaire à l'action Effectuée:
Troisième: Sur le viewController.swift où le pavé numérique apparaît.
Important: Dans le viewDidLoad() de définir tous les objets textfield qui sera à l'aide de ce clavier. Si votre viewDidLoad() devrait ressembler à quelque chose comme ceci:
Je ne suis pas sûr de savoir comment, si il y a un moyen de le faire pour tous les objets textfield qui sont dans la vue. Cela serait bien pratique...
De suite: Encore dans viewController.swift nous avons besoin d'ajouter une variable et deux fonctions. Il ressemblera à ceci:
Explication de ce qui se passe ici:
Et vous devriez être en affaires.
Un grand merci à Suragchs pour m'aider à obtenir ce qui se passe.
textField.deleteBackward()
pour revenir en arrière. Si vous êtes intéressés, voici un démo-vue-contrôleur et ceci est l'un des claviers que j'utilise en elle. Il montre l'endroit où j'ai parcouru depuis le premier démarrage avec l'exemple ici. J'ai fini par abandonner plumes (pour une autre raison) et de l'agencement de la programmation, mais je n'ai pas nécessaire, de recommander que pour vous.textfield
vous n'avez pas besoin de la traiter dans laviewDidLoad()
. Et puis si vous ne voulez que le clavier personnalisés pour les autrestextfield
puis dansviewDidLoad()
vous devez définir latextfield
délégué de soi et de remplacer le clavier avec le clavier personnalisé comme indiqué dans la troisième étape ci-dessus.