2011-12-16 17 views
2

我已經完全失去了嘗試瞭解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存根。)

+0

具有根視圖控制器和模態控制器的最小項目不會顯示您所看到的行爲。我想你需要發佈一個精簡版的代碼,如果你想在這裏得到任何幫助。 – 2011-12-16 21:30:52

回答

1

很多道歉在這裏傢伙。像往常一樣,這些類型的東西,其開發人員(我)的錯誤。我發佈了發生的情況,以防其他人到達這裏。

這是針對在第三方應用程序中實現的靜態庫。 (Flash,在這種情況下),我沒有源代碼。一些深度調試揭示了我應該已經明白的事情 - 使用我的庫的第三方應用程序正在自己的shouldAutoRotate函數中進行一些有問題的計算,並且在某些情況下返回NO for anyInterfaceOrientation參數(不正確。)