0 votes

Pourquoi ne puis-je pas toucher les éléments de saisie après avoir redimensionné une vue défilante?

J'ai un projet d'exemple qui utilise les métriques des notifications pour redimensionner le clavier lorsqu'un champ de texte est centré.

http://www.smallsharptools.com/downloads/ObjC/KeyboardSize.zip

La série de champs de texte est enveloppée dans un UIScrollView et lors de l'affichage du clavier, une notification est envoyée avec la valeur de la hauteur. J'utilise cela pour réduire la hauteur du UIScrollView afin que tout le contenu puisse défiler à l'intérieur sans être recouvert par le clavier.

Mais je trouve que lorsque je fais cela, les autres champs de texte ne peuvent parfois pas être tapés. Ils semblent être recouverts par une couche que je ne peux pas voir.

Que puis-je faire pour m'assurer que les éléments d'entrée du UIScrollView restent accessibles lorsque la hauteur est modifiée ?

FYI : Vous pouvez voir dans le projet d'exemple qu'il y a un repère bleu en haut et un autre rouge en bas. Le contrôleur de vue qui gère le redimensionnement est CMScrollingViewController qui est hérité dans KeyboardSizeViewController afin que ce comportement puisse être utilisé par plusieurs contrôleurs de vue.

J'espère que ce problème pourra être résolu afin que ce code simple puisse être réutilisé.

0voto

Brennan Points 4532

J'ai résolu mon problème. J'avais défini la vue qui se trouve à l'intérieur de la vue défilante pour étirer la hauteur et la largeur en utilisant le masque de redimensionnement automatique. Une fois que j'ai commenté cette ligne de code, le problème a disparu. Il semble que la vue était redimensionnée mais je pouvais toujours voir le contenu de la vue à l'extérieur des limites de la vue, de sorte qu'elle ne pouvait pas répondre aux clics.

//self.subView.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);

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