scrollView qui scrolle pas
Bonjour,
Dans mon appli j'ai une vue principale (mainView) qu'on flippe sur une vue de réglage (settingsView). Comme il y a pas mal de fonctionnalités, ma settingsView contient une scrollView de W: 960 H: 460 (3 imageView faisant office de subviews). Mon problème est que ça scrolle pas.
Est ce que quelqu'un pourrait me renseigner svp?j'ai déja regardé les sample Scrolling et PageControl.
Dans mon code, le .h:
et le .m
Dans IB, ma scrollView est bien bindée à ma settingsView et les boutons de la premiere subview sont fonctionnels.
En fait ce que j'aimerai c'est que ça scroll et que je puisse mettre à jour le pageControl en même temps. ça doit pas être bien compliqué mais quand ça veut pas ça veut pas
Merci
Dans mon appli j'ai une vue principale (mainView) qu'on flippe sur une vue de réglage (settingsView). Comme il y a pas mal de fonctionnalités, ma settingsView contient une scrollView de W: 960 H: 460 (3 imageView faisant office de subviews). Mon problème est que ça scrolle pas.
Est ce que quelqu'un pourrait me renseigner svp?j'ai déja regardé les sample Scrolling et PageControl.
Dans mon code, le .h:
@interface SettingsView : UIView <UIScrollViewDelegate>{<br /> IBOutlet UIScrollView *aScrollView;<br />
et le .m
-(void)awakeFromNib{<br /> aScrollView.scrollEnabled = YES;<br /> aScrollView.pagingEnabled = YES;<br /> aScrollView.clipsToBounds = YES;<br /> aScrollView.canCancelContentTouches = YES;<br /> //scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height);<br /> aScrollView.showsHorizontalScrollIndicator = NO;<br /> aScrollView.showsVerticalScrollIndicator = NO;<br /> aScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;<br /> aScrollView.scrollsToTop = NO;<br /> aScrollView.delegate = self;<br />}<br /><br />- (void)scrollViewDidScroll:(UIScrollView *)scrollView{<br /> scrollView = aScrollView;<br />}<br />
Dans IB, ma scrollView est bien bindée à ma settingsView et les boutons de la premiere subview sont fonctionnels.
En fait ce que j'aimerai c'est que ça scroll et que je puisse mettre à jour le pageControl en même temps. ça doit pas être bien compliqué mais quand ça veut pas ça veut pas
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
D'autre part tu sembles faire les choses à l'envers, il faut que se soit ta settingView qui soit contenu dans ta scrollView.
Qu'on me reprenne si je me trompe mais il me semble que c'est ça.
Sinon j'avais fait un court tuto dessus si ça t'intéresse ici
Si j'ai pas le choix je vais utiliser que des vues et me faire mon anim (mais vraiment si j'ai pas le choix).
Perso je n'en suis pas là encore.
Deux choses, si tu le veux, met ton projet en lien qu'on puisse le regarder. Et sinon moi perso je te conseil de faire un mini projet à coté pour te faire la main sur un scrollview. Et troisio si tu veux faire une vue de paramètres je te conseil de faire comme Apple avec leur paramètre sur iPhone.
ps: J'ai un doute sur ce que j'ai dit (la scrollview qui doit contenir ta settingview) car c'est ta settingview qui réceptionnera les events or pour que la scrollview puisse bouger elle doit bien recevoir les events en premier non?
[edit] Va voir dans UITableView tu va trouver ton bonheur à mon avis. J'ai joint une image de la doc pour illustrer
Bah je voudrais bien mettre le projet en lien, mais je suis en stage de fin d'études et j'ai une clause de confidentialité, en plus il sont en train de lancer l'activité et je suis le seul du coup à faire du dev iphone (et je m'autoforme) alors c'est pas la joie.
Tout à fait ok pour les mini projet, je fonctionne comme ça
il me semble aussi, mais comme j'ai 1 mois d'expérience iphoe sdk, j'en suis pas sûr non plus
Edit(h):merci, j'y cours de suite
re-Edit(h):
arf, c'est uniquement du scrolling horizontal que je cherche. En tout cas merci pour l'idée
Sinon je confirme, ta vue settingsView dois se trouver DEDANS ta scrollView!
myImage étant une ImageView mais tu dois pouvoir mettre ce que tu veux dedans. Même une vue composée de plusieurs vue.
[edit]Je remarque aussi que tu ne set pas la taille du contenu de ta scrollview, ce qui doit-être assez important Il faut faire:
En gros tu as une scrollview de la taille de l'écran et tu lui dit "hey le contenu que tu va devoir afficher fait: X*Y pour toi c'est 960*460 si je comprend bien.
Alors là , bah ué that's the solution in fact. En fait j'avais cette ligne dans mon code comme tu as pu le voir, dans mon premier message mais je l'avais commentée parce que j'avais setté la taille de ma scrollView dans IB. Comme quoi, même pour des réglages "basic" vaut mieux tester par le code (mais bon faut savoir justement quels réglages vont poser probleme).
Conclusion, un grand merci, ça fonctionne.
Et : => ah bah apparement nan puisque ma scrollView est SUR ma settingsView(UIView).Du coup je te confirme l'inverse
En tout cas un grand merci parce que j'ai cherché une grande partie de l'aprem hier avant de poster.
A bientôt et bon ap' (fait faim)
Attend c'est dingue ce truc! Tu pourrais me faire un screenshot des liaisons dans IB? Sinon je vais essayer ta technique, ça marche peut-être dans les deux cas? Etrange en tout cas.
@Philippe, perso j'ai pas le droit de voir ce que tu veut montré ^^ Bientôt peut-être...
Edit(h): 69Mo le truc de Philippe...jme demande ce que ça peut être, on va voir ça dans quelques secondes
A quel moment, et qui vers qui tu fais addSubview? Parce que si je comprend bien dans IB, tu as ta settingView et une scrollView qui correspond à l'IBOutlet aScrollView. Tu as juste placé ta scrollView par dessus ta settingView dans IB?
Je vois pas comment ça peut marché si c'est pas comme sur l'image que je joint. Ou alors on s'est pas compris avec les terme "sur" et "dedans" ^^
Ca te donne ça aussi toi?
Une scrollview (faisant par exemple 320x416 pixels) contient, en subview donc, la vue à afficher, typiquement plus grande que la scrollview (par exemple une vie de 800x600px). La scrollview va alors te permettre de faire scroller le contenu pour afficher la partie qui t'intéresse de sa subview.
Et ce n'est pas dans l'autre sens que ça s'utilise, c'est pas une grande vue dans laquelle on place une scrollview pour faire en sorte que la grande vue soit scrollable, non non non.
Pourquoi changer le style si tu caches les barres de scroll? A moins que tu ne veuille plus tard les faire apparaà®tre?
Et sinon il me semble que le scroll est "enabled" par défaut, ça t'évite:
Pfff bon bah ça déconne; quand je scroll ça va au delà des limites de la scrollView et 2 secondes apres s'être arrété ça va fixer pile poil sur l'imageView2. Ensuite, une fois qu'il a bloqué sur la 2, impossible de scroller vers la 3.
Edit(h):
j'ai mis une tite image de l'arborescence
->Ali : en fait de mon côté c'est une UIView (320x460) qui contient une UIScrollView (460x960), qui contient 3 UIImageView l'une à côté de l'autre.
Pour toi, faut mettre des UIView à la Place de mes UIImageView donc?
Il faudrait pas que tu mettes tes trois UIImageView dans une grande vue qui les contiendrais?
Après je pense qu'on peut faire sans, et garder plusieurs subviews, mais du coup faut bien renseigner la scrollview pour lui donner la taille de la vue à scroller (un truc genre contentViewSize, je sais plus) en la calculant d'après le rectangle englobant de toutes tes subViews (voir méthodes de CGGeometry.h sur les unions et intersections de CGRect pour faire une union de tes frames de tes subviews)...
Bref les deux sont jouables, que tu n'aies qu'une vue ou que tu en gardes plusieurs du moment que tu calcules et indiques bien la taille de la "zone virtuelle à faire scroller"... mais à voir laquelle sera la plus simple
Bah j'ai rien réussi de l'apèm. ça scroll mais jusque bien au delà des limites de taille de ma scrollView, et une fois qu'on a laché et que le scroll s'arrète, ça va fixer sur l'imageView2 (celle du mileu en fait (ya 3 imageView)) et impossible de re-scroller vers la droite.
Donc en fait, ce que je cherche maintenant c'est que chaque scroll m'amène sur la "page" suivante, j'ai essayé en enregistrant l'origine de chaque imageView mais ça a rien donné de plus >:(
Sur ce bonne soirée
[edit] Cherche dans Modal View Controller dans la doc
L'exemple PageControl
En fait la différence avec l'exemple PageControl (à part le fait que eux ça marche) c'est qu'ils ajoutent explicitement des subview
En gros je ferais:
J'étais en train d'éditer quand tu as posté
Le seul problème c'est que tu scroll sur plus d'un centimètre et tu te retrouve direct sur la page 3 et on a pas le temps de voir la décélération
• Comment sont disposées tes vues, les connections.
• Les méthodes clés.
• Le(s) problème(s) rencontré(s).
oui ça je m'en doutais, soit tu fait toi même une fonction qui gère l'animation soit tu trouve le truc qu'Apple utilise. Tu utilises bien les modals view? Tu dois avoir une animation quand tu changes de vue je crois.
Désolé de ne pas avoir répondu plus tôt, on a fait le pont.
Greensource, nan je n'utilise pas les modalView parce que ça prend un viewController en paramètre et que je n'utilise pas le viewController, tout est géré dans la classe SettingsView:UIView
Voilà la partie de code qui pose problème. J'espère vraiment que quelqu'un aura une solution parce que je sature vraiment. Merci en tous cas
Quand je veux changer de vue en cliquant le pageControl il n'y a pas de problème ça change de subview comme il faut avec l'animation.
Les problèmes: En scrollant depuis la scrollView un trés léger déplacement (0.5cm) amène sur la 2ème subview sans animation, un déplacement trés légèrement plus long (<=1cm) amène sur la 3ème subview (la dernière) sans animation non plus mais on voit bien sur le pageControl que ça passe bien par la vue 2.
Edit:En gros quand je scroll (je pose le doigt, je le déplace, je lâche), quand j'ai relevé le doigt c'est comme si il y avait de l'inertie et alors ça peut pas s'arréter en subview2...
SVP HELP ME
Re-edit:Vous pensez que je dois laisser tomber et implémenter des touchesMoved etc ou il y a une solution toute simple que je ne connais pas? Au passage, si je met pagingEnabled à YES ça fait n'importe quoi, les limites de frame ne sont plus respectées...