タブバーには4つのコントローラーがあり、それはビューです。電話を回転させると、コントローラーの1つだけに対してメソッド shouldAutorotateToInterfaceOrientation を呼び出す必要がありますが、それらすべてに対してメソッドを呼び出します。
コントローラーの 1 つだけに対して shouldAutorotateToInterfaceOrientation を呼び出すにはどうすればよいですか?
タブバーには4つのコントローラーがあり、それはビューです。電話を回転させると、コントローラーの1つだけに対してメソッド shouldAutorotateToInterfaceOrientation を呼び出す必要がありますが、それらすべてに対してメソッドを呼び出します。
コントローラーの 1 つだけに対して shouldAutorotateToInterfaceOrientation を呼び出すにはどうすればよいですか?
これらのメソッドを「呼び出す」のではなく、UIViewController から継承する任意のクラスに対して呼び出されるメソッドです。
とにかく呼び出されたくない理由はありません。
できることは、コントローラーのいずれかに対してこれらのメソッドのいずれかをオーバーライドすることを決定することです。
このメソッドはブール値を返します。true を返す場合はビューが回転しています。false を返す場合はそうではありません。
1 つの特定の向きをサポートするために、向きに基づいて YES/NO を返すように決定することもできます。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
この場合、新しい向きが縦向きの場合にのみビューが回転します。
JP Hribovsekに感謝しますbeginGeneratingDeviceOrientationNotifications
。デバイスの向きが変更されたときに通知することを使用して、解決しました。例えば:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(deviceRotate:)
name: UIDeviceOrientationDidChangeNotification
object: nil];
-(void) deviceRotate: (NSNotification*) notification
{
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
NSlog(@"Landscape");
}
}