我已經完全失去了嘗試瞭解iOS中的這種特定行爲。 14小時後,閱讀無數堆棧溢出問題,並仔細閱讀所有相關的Apple文檔,但我仍然很困惑 - 所以我希望一個具體的例子能幫助專家向我解釋。iphone和ipad之間的modalviewcontroller的不同方向行爲
我有我提出一個模式視圖控制器(這個問題的行爲適用與任何蘋果的預製modalviewcontrollers的,似乎並不無論哪個。)
最簡單地說,我有旋轉爲橫向設備。如果我撥打:
[rootViewController presentModalViewController:modalVC animated:YES];
在iPhone上,按預期呈現。 在iPad上,也表現爲預期(包含作爲第一個灰色背景)
後來,在modalVC的委託其內置的「完成」按鈕,我呼籲:
[rootViewController dissmissModalViewControllerAnimated: YES];
這裏就是症狀開始:
在iPhone上,不管RootViewController的的shouldAutoRotateToInterfaceOrientation是否返回YES或NO,狀態欄將立即進入人像方向;那麼模式會以錯誤的(人像,向右)方向滑出,並且底層的rootViewController現在以縱向顯示,而不會查詢其shouldAutoRotate。
在iPad上,我得到預期的行爲 - 模式被按預期解散,方向保持不變。
我在這裏不理解什麼?我已經嘗試了很多東西,包括覆蓋modalViewController的shouldAUtoRotate行爲,並使用各種容器視圖控制器。唯一有效的解決方案是創建一個存根UIViewController,將其視圖附加到keyWindow,並在其中呈現模態。雖然這解決了這個問題,但許多蘋果和非現場文章宣稱這是不正確的(有充分的理由,因爲它阻止適當的事件傳播到達UIViewController存根。)
具有根視圖控制器和模態控制器的最小項目不會顯示您所看到的行爲。我想你需要發佈一個精簡版的代碼,如果你想在這裏得到任何幫助。 – 2011-12-16 21:30:52