2010-04-12 26 views
1

我想基於設備旋轉在我的應用中實現一些界面更改。shouldAutorotateToInterfaceOrientation連續調用幾次而沒有任何旋轉

我的應用程序是一個基於視圖的應用程序。所以,它的主視圖控制器有一個didload方法。

該應用程序以縱向顯示。設備方向上的幾乎所有更改都會觸發shouldAutorotateToInterfaceOrientation方法,但在從任何橫向方向來到設備時,都不會調用此方法。

在調試應用程序,我已經把

NSLog(@"orientation=%d", interfaceOrientation); 

我shouldAutorotateToInterfaceOrientation方法,和我所看到的是很奇怪:

  • 當我運行應用程序,shouldAutorotateToInterfaceOrientation被稱爲6次甚至在應用界面出現之前。每次運行時,它都會爲方向報告不同的編號:它在控制檯上報告的順序是:縱向,縱向,縱向,右側,左側,倒置)(????)。

在此期間,應用程序剛剛開始。調試器報告來自應用程序代理的所有6個調用。

所以,來這裏的問題:

  1. 爲什麼shouldAutorotateToInterfaceOrientation當設備上的畫像進入不會被調用?
  2. 爲什麼代表在應用程序顯示之前調用此方法6次,特別是在沒有旋轉時?

謝謝。

回答

3

UIViewController Class Reference似乎說這個方法返回一個值「指示視圖控制器是否支持指定的方向」。

它沒有作出任何承諾,設備現在不旋轉,它只是查詢你的控制器可以支持的方向。因此聲明:

您的視圖控制器可以支持給定的方向,或者它不是。

2

系統正在緩存響應,因此它知道要嘗試和檢測哪些方向。