1

我有一個iPad應用程序支持所有方向的設置。在部分應用程序中,點擊會觸發需要導航控制器的模態視圖控制器的顯示。所以我基本上是這樣做的:Modal UINavigationController以錯誤的方向呈現

UIViewController *myViewController = [[UIViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myViewController]; 
NSLog(@"%d", nav.interfaceOrientation); 

[window.rootViewController presentModalViewController:nav animated:YES]; 

當iPad在肖像(主頁按鈕)時,這工作正常。在任何其他方向上,模式視圖始終以主屏幕按鈕的方式顯示,而不是顯示在設備的當前底部。

如果我完全跳過導航控制器,並以模態方式顯示myViewController,它看起來是正確的。

所以,我試着繼承UINavigationViewController並明確覆蓋了shouldAutorotate:supportedInterfaceOrientations:方法,但這沒有任何影響。有趣的是,如果我重寫viewWillAppear方法並記錄interfaceOrientation屬性的值,即使它從上面的代碼訪問它時返回正確的值,它總是返回1

我也檢查過InfoView中支持所有的方向。

那麼,還有什麼可能導致這種行爲?任何幫助不勝感激。

回答

1

嘗試在導航控制器的子類中實現preferredInterfaceOrientationForPresentation。

以下爲我工作:

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return self.interfaceOrientation; 
}