![](/img/trans.png)
[英]iOS: Universal app won't rotate, never calls willRotateToInterfaceOrientation
[英]Manually route willRotateToInterfaceOrientation calls
我有多個UIViewControllers,它們的視圖通過使用添加子視圖相互嵌套。 我只是讓我的所有視圖都自動改變方向,除了一個。 堆棧末尾的那一個。 我還意識到willRotateToInterfaceOrientation方法不會傳播到子視圖控制器。 什么是處理這個的最好方法? 我應該嘗試手動將呼叫路由到子視圖嗎?
不旋轉的終端控制器取自樣本照片查看器應用程序PhotoViewController,並依賴於調用的willRotateToInterfaceOrientation方法。
任何幫助,將不勝感激。
在iOS 5之前,您必須將所有4個主要旋轉方法都路由下來。 這包括
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration;
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
要正確實現這種類型的包含,您還需要路由UIView生命周期方法:
- (void)viewDidLoad;
- (void)viewDidUnload;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
對於iOS 4.3及willRotateToInterfaceOrientation
,路由調用willRotateToInterfaceOrientation
(以及其他此類方法)是完全willRotateToInterfaceOrientation
做法。 問題是視圖控制器沒有概念是其他視圖控制器的子視圖控制器。
在iOS 5中,引入了容器視圖控制器的概念(事實證明UINavigationController和UITabBarController一直是特殊的“容器視圖控制器” - 注意這些視圖控制器已經將這些方法路由到您自己的視圖控制器!)。 容器視圖控制器的概念將諸如willRotateToInterfaceOrientation
之類的路由方法的willRotateToInterfaceOrientation
從父視圖控制器willRotateToInterfaceOrientation
為子視圖控制器。
您應該查看“UIViewController”類參考文檔的“實現容器視圖控制器”部分。 iOS5目前處於開發者預覽版中,因此您需要成為注冊的iOS開發人員才能訪問它。 從iOS5開始,這將是解決您所描述的問題的首選方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.