簡體   English   中英

手動路由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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM