0

タブバーには4つのコントローラーがあり、それはビューです。電話を回転させると、コントローラーの1つだけに対してメソッド shouldAutorotateToInterfaceOrientation を呼び出す必要がありますが、それらすべてに対してメソッドを呼び出します。

コントローラーの 1 つだけに対して shouldAutorotateToInterfaceOrientation を呼び出すにはどうすればよいですか?

4

2 に答える 2

1

これらのメソッドを「呼び出す」のではなく、UIViewController から継承する任意のクラスに対して呼び出されるメソッドです。
とにかく呼び出されたくない理由はありません。
できることは、コントローラーのいずれかに対してこれらのメソッドのいずれかをオーバーライドすることを決定することです。
このメソッドはブール値を返します。true を返す場合はビューが回転しています。false を返す場合はそうではありません。

1 つの特定の向きをサポートするために、向きに基づいて YES/NO を返すように決定することもできます。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

この場合、新しい向きが縦向きの場合にのみビューが回転します。

于 2012-05-03T01:20:09.663 に答える
0

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");    
    }
}
于 2012-05-03T18:35:12.653 に答える