Je sais que cela a été parlé beaucoup. Je pense que je suis allé à travers toutes les questions sur ce site et je n'ai toujours pas pu obtenir ce travail. p>
Je suis nouveau au développement mais j'ai un bon sens de ce qui se passe avec tout mon code. Je n'ai certainement pas beaucoup d'expérience cependant, c'est ma première application iPhone. P>
Je fais un champ de saisie de données composé de multiplesfields Uitext dans un UiscrollView. Je vais éviter d'expliquer les autres détails pour l'instant, car il semble que c'est un problème très fondamental. Sans ScrollView, les champs de texte fonctionnent parfaitement. Je peux toucher le champ de texte et le clavier ou la vue de sélectionnoir de manière appropriée. Lorsque j'ajoute les champs de texte à un ScrollView, l'entreprise ScrollView fonctionne, mais les champs de texte ne reçoivent pas mes touches.
Voici la clé: lorsque «Interaction utilisateur» est activée, les Works ScrollViews mais les touches Textfield ne sont pas enregistrées. Lorsque "Interaction utilisateur" est désactivé, la vision de ScrollView ne fonctionne pas, mais les touches TextField sont enregistrées et le clavier / sélecteur apparaît. P>
des autres postes, j'ai vu des personnes créant des sous-classes et remplacer les touches dans une implémentation distincte. J'ai vu des gens avec des vues de contenu personnalisées (Sous-système?), J'ai vu des solutions qui sont maintenant obsolètes depuis que les API ont changé dans les versions plus récentes du SDK, et je suis tout simplement complètement bloqué. P>
Je vais laisser mon code pour le moment, car il y a peut-être une solution que quelqu'un a sans nécessiter mon code. Si quelqu'un a besoin de voir mon code, je vais le mettre en place. Mon application est écrite dans le 3.1.3 SDK. P>
Si quelqu'un a des informations pouvant aider, il serait très apprécié. P>
3 Réponses :
On dirait que vous utilisez IB pour faire beaucoup de votre mise en page d'interface utilisateur. Si vous utilisez une approche programmatique, vous pouvez configurer la hiérarchie de visualisation suivante qui devrait fonctionner.
Votre objectif de contrôleur d'affichage Gestion de votre page de défilement et de vos champs de texte doivent avoir un objet code> uiscrollview code> objet et un Objet UIView code> (en plus de tout objet
uitextfield code> dont vous avez besoin). Dans la méthode LoadView de la classe de contrôleur d'affichage, allouez et intitualez l'objet
uiview code> et ajoutez vos champs de texte comme sous-visions. À la fin de la méthode, allouez et intitualisez l'objet
uiscrollview code> Ajoutez le
uiview code> au
uiscrollview code> comme sous-visVIEW. P> Par exemple, si votre objet
UiscrollView CODE> a été appelé ScrollView et votre objet
uIView code> intitulé Mainview Les lignes suivantes à la fin de la méthode Lockview de la vérification de la vue Configurez correctement le Affichage du défilement avec la vue principale avec les champs de texte indiqués: P>
scrollView = [[UIScrollView alloc] initWithFrame: [[UIScreen mainScreen] bounds] ];
scrollView.backgroundColor = [UIColor whiteColor];
scrollView.contentSize = mainView.frame.size;
[scrollView addSubview: mainView];
self.view = scrollView;
Vous devrez peut-être activer / désactiver l'interaction utilisateur pour la vue de défilement et les champs de texte si nécessaire.
Si possible, vous pourriez mieux utiliser différents mécanismes tactiles pour chaque processus (entrées de défilement et de textfield). p>
Peut-être que vous pouvez vérifier le différentiel de temps entre le démarrage et la fin tactiles de telle sorte que vous puissiez détecter la différence entre une glisser (défilement) et un robinet (entrée de texte). p>
après avoir dit que si vous propagez les touches des champs de texte à la vue ScrollView, vous devriez aller bien. Une chose que j'utilise est la suivante: p> qui passe l'objet touché afin que vous puissiez l'identifier et agir en conséquence. P> P>
Voici ce qui a fonctionné pour moi dans Dans le storyboard, sélectionnez votre Xcode 4.3.3 Code>. P>
ScrollView code>. Sélectionnez
Inspecteur d'attributs code> sur le côté droit. Décocher
retards Le contenu touche code>. P>
Merci beaucoup! Cela devrait être la bonne réponse, je l'ai fait et enfin travaillé !!! Vraiment vraiment merci beaucoup!