2010-07-27 9 views
0

J'ai un problème avec un UIScrollView. J'ai défini frame.size, contentSize (plus grand que frame), mais je ne peux toujours pas faire défiler. Mon programme a sctucrure comme ceci: MainMenuViewController -> ScrollBarController -> UIScrollViewUIScrollView ne défile pas

Ceci est une partie de la méthode de MainMenuViewController viewDidLoad

ScrollBarController *imgScrollBarCtrl = [[ScrollBarController alloc] init]; 
// set images folder 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *imagesFolder = [documentsDirectory stringByAppendingPathComponent:@"SavedImages"]; 

// set scroll bar frame size 
imgScrollBarCtrl.view.frame = CGRectMake(0.0, 0.0, 1024.0, 128.0); 
[imgScrollBarCtrl setImagesFolder:imagesFolder]; 

// method adds subviews UIImageView to the scroll bar 
// and set view's contentSize according thumbnails number 
[imgScrollBarCtrl recalculateThumbnailsBounds]; 

[topPanel addSubview:imgScrollBarCtrl.view]; 
[imgScrollBarCtrl release]; 

Il est méthode loadView de la classe ScrollBarController:

- (void)loadView { 

    UIScrollView *aScrollView = [[UIScrollView alloc] init]; 

    aScrollView.scrollEnabled = YES; 

    self.view = aScrollView; 

    [aScrollView release]; 
} 

J'ai mis contentSize de mon scrollView dans recalculateThumbnailsBounds de ScrollBarController. Il a été réglé correctement (1620.0, 128.0), mais le défilement ne fonctionne pas. J'ai essayé de définir contentSize dans MenuViewController en ajoutant: ((UIScrollView *)imgScrollBarCtrl.view).contentSize(2000.0, 128.0); mais cela ne fonctionne pas aussi bien. Après NSLog(...) après avoir défini la taille du contenu et la taille de l'image et contentSize à la console - ils sont définis correctement freme.size = 1028.0,128.0, contentSize = 1620.0,128.0.

J'ai vérifié les méthodes - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event dans les deux contrôleurs - MainMenuController et ScrollBarController. Seul le contrôleur principal déclenche cette méthode. ScrollBarController ne reçoit jamais d'événements touche ... c'est probablement un problème ...

Est-ce que quelqu'un a une idée de ce qui pourrait se passer? À votre santé!

Répondre

-1
[[UIScrollView alloc] initWithFrame:(CGRect)frame] 

Tous les descendants UIView utilisent le schéma. En outre, votre extrait de code n'est pas très clair sur ce que vous essayez d'obtenir, ce qui peut entraîner d'autres problèmes dans votre code.

Vous devriez essayer de commencer par définir un paramètre contentSize dans la méthode - (void) loadView et voir si vous obtenez le bon comportement.

+0

Je l'ai déjà essayé. Essayé à nouveau après votre recommandation. J'ai la même chose - la vue de défilement et la disposition de sous-vues est appropriée mais la vue de défilement ne défile pas. De quelles méthodes avez-vous besoin pour avoir une meilleure image? Je pensais juste que ces méthodes sont suffisantes. D'autres méthodes plus pour calculer des cadres pour les vues 'UIImageView' et les ajouter à la vue de défilement. – OgreSwamp