2012-09-09 86 views
0

可能重複:
Orientation in a UIView added to a UIWindow添加子視圖改變方向

當我使用[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view]加入我加載視圖作爲子視圖(這樣談到對所有意見的頂部)即使我的應用鎖定爲橫向,視圖的方向也會以縱向顯示。當我直接添加子視圖時,這不會發生。

任何想法爲什麼我哪裏出錯了?

+0

相關問題:http://stackoverflow.com/questions/2508630/orientation-in-a-uiview-added-to-a-uiwindow – Felix

+0

這是一個奇怪的結構,添加一個視圖作爲'keyWindow的子視圖',並且一定不會收到通知事件。爲什麼不添加爲視圖控制器視圖的子視圖(在這種情況下,視圖控制器將獲得所有適當的旋轉通知事件)。你可以解決你的構造,但爲什麼呢? – Rob

回答

0

也猜測沒有代碼,但另一種理論是擁有該視圖的ViewController響應- (BOOL)shouldAutorotateToInterfaceOrientation:只有肖像的真實值(我認爲很多xcode提供的模板vc代碼默認是這樣做的) 。我們所討論的ViewController可能被稱爲myView(如果我對此正確,「myView」是ViewController實例的一個不好的名稱選擇)。檢查ViewController的shouldAutorotate的實現...確保在預期方向是橫向時它回答YES。

0

沒有代碼很難說,但這可能是因爲當你直接向窗口添加子視圖時,它不是你的根視圖控制器視圖的子視圖,並且獲取定位通知。我要麼避免它直接添加到窗口的子視圖,或者如果你一定要,註冊取向的通知,像這樣:

[[NSNotificationCenter defaultCenter] addObserver:myView 
             selector:@selector(orientationChanged:) 
              name:UIDeviceOrientationDidChangeNotification 
              object:nil]; 

,然後添加適當的方法來你myView視圖控制器來處理它。

+0

我的應用程序被固定爲橫向模式,那麼它有什麼關係?即使設備未旋轉,也會出現此問題。 – pa12