我有一個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中支持所有的方向。
那麼,還有什麼可能導致這種行爲?任何幫助不勝感激。