2010-02-12 3 views
3

Dans mon application, j'essaie d'utiliser le TTphotoView, donc dans un ViewController je pousse le TTphotoView avec mon NavigationController comme ceci:TTThumbView/TTPhotoView pas autorotation



if(self.photoViewController == nil { 

    PhotoViewController *viewController = [[PhotoViewController alloc] init]; 
    self.photoViewController = viewController; 
    viewController.hidesBottomBarWhenPushed = YES; 
    [viewController release]; 
} 
[self.navigationController pushViewController:self.photoViewController animated:YES]; 
[self.navigationController  dismissModalViewControllerAnimated:YES] 


le problème est lorsque l'utilisateur tourne l'appareil sur la PhotoViewController rien ne se passe.

EDIT: Je ne peux pas croire que les gens n'ont pas eu le même problème. Si quelqu'un utilise le photoView dans son application avec sa propre navigation et non le TTNavigation, peut-il me dire comment il a poussé le ViewController?

Répondre

0

Avez-vous votre demande de substitution:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

et retourné OUI pour les orientations du paysage?

+0

oui je le fais déjà. Mon UiNavigationcontroller ou UITbabBarController peut être un problème ou non? – ludo

+0

Alors PhotoViewController remplace overrAutoRotateToInterfaceOrientation? Si c'est le cas, je ne pense pas que la vue des parents devrait le faire. – willcodejavaforfood

+0

Oui peut-être que cela l'annule mais je ne suis pas sûr. Je ne sais vraiment pas quel peut être le problème. Je peux forcer la rotation que je vais vous montrer dans ma 2ème réponse mais je ne veux pas faire ça car il y aura trop de problèmes avec tout ce qui est dedans. – ludo

0

Mon commentaire pour willcodejavaforfood, comme je vous ai dit que je peux forcer en faisant quelque chose comme par exemple cela, mais trop de problème à l'intérieur, et le PhotoViewController de Three20 dois le faire par lui-même si je ne veux pas que:



- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; 
} 


-(void) receivedRotate: (NSNotification *) notification { 

    NSLog(@"ORIENTATION CHANGE"); 
    UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation]; 

    if(interfaceOrientation == UIDeviceOrientationLandscapeRight) { 

     [UIView beginAnimations:@"View Flip" context:nil]; 
     [UIView setAnimationDuration: 0.5f]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

     self.view.transform = CGAffineTransformIdentity; 
     self.view.transform = CGAffineTransformMakeRotation(-M_PI/2); 
     self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 320.0); 

     self.view.center = CGPointMake(240.0f, 160.0f); 
     [UIView commitAnimations]; 

    } 
} 

2

J'ai eu le même problème.

Je ne sais pas pourquoi mais la méthode TTScrollView deviceOrientationDidChange en code trois20 est mise en commentaire! Si vous le décommentez, cela fonctionnera.

Voir le code ici: http://github.com/facebook/three20/blob/master/src/TTScrollView.m

+0

Je vais devoir le regarder parce que je ne pense pas dans mon code c'était dans le commentaire. Mais mon problème était avec le TabBar, je devais permettre à la TabBar de tourner dans mon application et maintenant son fonctionnement – ludo