Le Scrollview et clavier Swift
Je suis nouveau ici et im de départ avec Swift pour iOS.
J'ai commencé à créer une application simple qui effectue certaines opérations. Mais je vais avoir quelques problèmes lorsque le clavier apparaît, en cachant l'un de mes objets textfield. Je pense que c'est un problème commun et j'ai fait quelques recherches mais je ne pouvais pas trouver quelque chose qui a résolu mon problème. Et je veux utiliser un parchemin plutôt que d'animer le champ texte pour le rendre visible.
Merci!!!!!
(désolé pour l'anglais erreurs)
Vous devez vous connecter pour publier un commentaire.
Dans le ViewDidLoad, enregistrer les notifications:
Ajouter ci-dessous les observateurs des méthodes qui ne le défilement automatique lorsque le clavier apparaît.
EDIT: Ce post a été mis à jour pour refléter les meilleures pratiques Swift 2.2 pour Objectif C sélecteurs.
extension
deUIView
La réponse sommet pour swift 3:
Et puis:
NotificationCenter.default.removeObserver(self)
NotificationCenter
:If your app targets iOS 9.0 and later or macOS 10.11 and later, you don't need to unregister an observer in its deallocation method.
UIKeyboardFrameBeginUserInfoKey
avecUIKeyboardFrameEndUserInfoKey
dans votre réponse. Parce que vous avez besoin dans le cadre de la fin willShow méthode.Ici est une solution complète de Swift 4, en utilisant de la garde et code concis. En Plus de corriger le code dans
keyboardWillHide
pour réinitialiser uniquement lesbottom
à 0.UIKeyboardFrameBeginUserInfoKey
est la clé incorrecte; il devrait êtreUIKeyboardFrameEndUserInfoKey
(début → fin). Cette solution donne de la hauteur nulle pour le clavier.keyboardWillShow
etkeyboardWillHide
peut être privé.pour Swift 4.0
Dans Le ViewDidLoad
Ajouter ci-dessous les observateurs des méthodes qui ne le défilement automatique lorsque le clavier apparaît.
contentInset
ne fonctionne pas pour moi, parce que je veux la scrollview aller tout le chemin jusqu'au-dessus du clavier. J'ai donc utilisercontentOffset
:De la réponse par Sudheer Palchuri, transformé pour Swift 4.
Dans le ViewDidLoad, enregistrer les notifications:
Et puis:
Lisant les liens que vous avez envoyé à moi, j'ai trouvé un moyen de le faire fonctionner, merci!:
Vous pouvez animer votre scrollview au centre de votre objet UITextField sur le clavier de l'apparence (c'est à dire. faire de votre textfield le premier intervenant) grâce à un parchemin de décalage. Voici un couple de bonnes ressources pour vous aider à démarrer (il y en a plusieurs sur ce site):
Comment déplacer par programmation un UIScrollView concentrer le contrôle au-dessus du clavier?
Comment faire un UIScrollView défilement automatique lorsqu'un objet UITextField devient un des premiers intervenants
En outre, si vous utilisez simplement un UITableView avec votre contenu dans les cellules, lorsque le champ devient le premier intervenant, de la UITableViewController permettra de faire défiler automatiquement les champs de la cellule pour vous (même si je ne suis pas sûr que c'est ce que vous voulez faire).
Une réponse pour Swift 3, basé sur celui proposé par Daniel Jones, mais plus sûr (merci à la garde), plus concise et cohérente de défilement indicateur encarts:
self.scrollView
Dans Swift4, il suffit d'ajouter l'extension suivante.
Au cas où quelqu'un est à la recherche de code Objective-C pour cette solution: