2010-03-18 40 views
0

我有一個自定義的UIViewController,這是UIView的唯一子視圖。該UIViewController中包含委託功能:自定義UIViewController沒有響應設備的旋轉

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

應用程序啓動時,當設備旋轉時不會再調用此函數被調用一次。我還注意到,willRotateToInterfaceOrientation函數從不被調用。我非常注意到UIViewController中的所有內容,但它仍然沒有響應設備旋轉。

+0

我明白你的意思,但你應該用四個空格縮進你的代碼,這樣編輯器就不會認爲你的'-'是一個子彈點 – 2010-03-18 17:44:43

+0

你的意思是「只有UIWindow的子視圖嗎?」通常,視圖控制器一次處理全屏,UIView子類處理特定於子視圖的任務。 – 2010-03-18 17:45:08

回答

2

我最終解決了自己的問題,從頭開始創建一個全新的UIViewController並確保它響應設備旋轉。然後我一塊一塊地帶上我的代碼並檢查了旋轉。最後,我找到了根本原因。在我的自定義的UIViewController,我不得不

- (id)initWithFrame:(CGRect)theframe { 
    if (self.view = [super.view initWithFrame:theframe]) 

它的工作找到excpet即使我沒有調用init函數它並沒有給設備輪替]響應。解決方案很簡單。在initWithFrame函數中添加[self init]。謝謝大家的迴應。

0

您可能需要在父UIView的控制器中實現該方法,因爲看起來您的視圖被包含在另一個視圖中。

+0

謝謝。不是這種情況。 – 2010-03-18 19:11:23

1

您的代碼看起來正確。我懷疑它是你的.xib文件中的東西(比如「文件所有者」的錯誤對象類型),所以可能你的視圖控制器子類根本沒有被實例化。把一些日誌記錄到viewDidLoad並確保它被調用。

+0

你的回答非常接近。通常很容易發現UIViewController沒有正確實例化,因爲沒有任何東西會起作用。我的情況有點棘手。請查看我對自己問題的回答。 – 2010-03-18 19:16:07

1

嘗試做一個測試應用程序,只是測試旋轉問題。這將有助於隔離您的問題。

+0

我確實採取了你的方法並隔離了這個問題。謝謝。 – 2010-03-18 19:16:59

相關問題