UIInterfaceOrientation вращение в подвиде не работает - PullRequest
2 голосов
/ 02 августа 2011

В моем приложении я использую UITabbarController, который прекрасно поворачивается ко всем UIInterfaceOrientations во всех viewcontrollers. Но когда я добавляю UIView в UIWindow впоследствии, он не будет добавлен в текущую UIInterfaceOrientation, но всегда в UInterfaceOrientationPortrait (который по умолчанию для приложения). Это не повернется к новой ориентации также. Я добавляю ViewController, используя:

LoginViewController *loginViewController = [[LoginViewController alloc] init];
[self.window addSubview:[loginViewController view]];

У меня есть

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    NSLog(@"%@", @"YES IT WILL!");
}

в LoginViewController.m, но никогда ничего не регистрируется. Любая идея, почему подпредставление не будет вращаться?

Sideswipe

EDIT: Нашел решение: По-видимому, в UIWindow должно быть только одно подпредставление, но не больше, иначе все испортится, поэтому я звоню:

LoginViewController *loginViewController = [[LoginViewController alloc] init];
[tabBarController presentModalViewController:loginViewController animated:YES];

вместо этого, который будет автоматически просматривать представление loginviewcontrollers.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

У меня есть представление внутри другого представления, когда произошло вращение, был вызван только родитель willRotateToInterfaceOrientation, поэтому я добавил [self.subViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; к методу willRotateToInterfaceOrientation родителя.

0 голосов
/ 02 августа 2011

Когда вы добавляете новое подпредставление в окно, вы также должны заставить его вращаться.

...