Почему UITabBarController возвращает сообщение "... должно поддерживать хотя бы одну ориентацию"? - PullRequest
3 голосов
/ 31 июля 2011

Я вложил в UITabBarController субкласс, чтобы переопределить shouldAutorotateToInterfaceOrientation:, чтобы в определенных обстоятельствах я мог поддерживать ландшафтный режим.Когда я запускаю это, контроллер панели вкладок выдает мне следующее сообщение, когда переопределенный метод возвращает NO

The view controller <...0x644f50> returned NO from -shouldAutorotateToInterfaceOrientation: for all interface orientations. It should support at least one orientation.

Любые предложения о том, как получить сообщение, отличное от returnYES все время в shouldAutorotateToInterfaceOrientation?

Ответы [ 2 ]

13 голосов
/ 31 июля 2011

Если вы возвращаете NO, это означает, что ваш контроллер вида не может отображаться ни в одной из 4 ориентаций.

Вы должны подумать, какие ориентации вы хотите, чтобы он поддерживал, и использовать параметр orientation, который они дают вам, чтобы принять эти ориентации.

Например, если бы я хотел, чтобы мой контроллер вида поддерживал правильную книжную и альбомную ориентацию, это было бы моей реализацией (это можно было бы сократить до линии, но я буду расширять ее для ясности):

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIDeviceOrientation)orientation{
  if(orientation == UIDeviceOrientationPortrait) return YES;
  if(orientation == UIDeviceOrientationLandscapeRight) return YES;
  return NO;
}
0 голосов
/ 31 июля 2011

Вы можете использовать UIInterfaceOrientationIsLandscape () и UIInterfaceOrientationIsPortrait (), чтобы указать, какую именно ориентацию вы хотите, чтобы UIViewController поддерживал.

...