2010-09-08 3 views
0

alt text J'ai un UIScrollView qui a un UIView intégré. Il a 2 boutons "défiler" et "défiler". En cliquant sur le bouton "défiler", mon scrollview défile vers le haut à partir du bas de la vue des parents. Tout fonctionne bien jusqu'à ici, mais quand je clique sur le bouton "défilement" pour repousser le scrollview d'où il vient, rien ne se passe. J'ai posté le code entier ici. S'il vous plaît vérifier où se situe la faute !! Déjà passé une quantité considérable de temps là-dessus.UIScrollView "scroll back"

-(IBAction)unscrollClicked:(id)sender 
{ 
//[viewController.view removeFromSuperview]; 
[UIView beginAnimations:@"back to original size" context:nil]; 

scrollView.contentSize=viewController.view.bounds.size; 


//scrollView.contentSize=viewController.view.bounds.size; 
[UIView commitAnimations]; 

} 

-(IBAction)scrollClicked:(id)sender 

{ 

//viewController.view.backgroundColor=[UIColor orangeColor]; 
viewController.view.frame=CGRectMake(0, 410, 320, 460); 

//[self.view addSubview:viewController.view]; 

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,40, 320, 400)];//(0,0,320,160) 
scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

//[MyView setFrame:CGRectMake (0, 0, 320, 170)]; 
viewController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
scrollView.contentSize = viewController.view.bounds.size; 


scrollView.bounces = YES; 
scrollView.bouncesZoom = YES; 
scrollView.scrollEnabled = YES; 
scrollView.minimumZoomScale = 0.5; 
scrollView.maximumZoomScale = 5.0; 
scrollView.delegate = self; 

[scrollView addSubview: viewController.view]; 


[self.view addSubview:scrollView]; 
[self moveScrollView:scrollView]; 
} 

-(void) moveScrollView:(UIScrollView *)scrollView 

{ 

CGFloat scrollamount=400; 



[scrollView setContentOffset:CGPointMake(0,scrollamount) animated:YES]; 
} 

Répondre

0

1er problème que je vois avec ce code est que vous initialisez scrollView dans scrollClicked et ne jamais stocker pointeur, donc dans unscrollClicked pointeur doit être nil. Un autre problème est que, pour autant que je sache, l'animation se déroule de cette façon:

[UIView beginAnimations:@"Animate" context:nil]; 
[UIView setAnimationDuration:2]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

[somView setFrame:CGRectMake(100, 100, 100, 100)]; 

[UIView commitAnimations]; 
+0

hey eviltrue Je l'ai fait maintenant. J'étais un vrai imbécile d'avoir fait comme je l'étais. J'ai finalement fait ce que tu as recommandé. Bien que le problème soit résolu, je suis curieux de connaître la première partie de ce que vous avez dit: ----- "initialise scrollView dans scrollClicked et ne stocke jamais le pointeur dessus, donc dans le pointeur unscrollClicked devrait être nul". –

+0

Eh bien, je pourrais manquer quelque chose, mais vous définissez scrollView comme variable locale dans scrollClicked, donc il devrait être manqué pour toujours. En d'autres termes, je ne sais pas où vous obtenez scrollView dans unscrollClicked. – eviltrue