简单的iPad应用程序。
App加载并显示由UIViewController的子类控制的UITableView。 这可以完美地旋转。
单击表视图中的行会导致创建新的子视图,该子视图也由UIViewController子类控制。 这在纵向上显示良好,但不适应横向,并且不响应设备旋转。
两个视图控制器都包括:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
NSLog(@"Responding to rotation");
return YES;
}
但是只有原始视图控制器才会响应:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"View About to rotate");
}
在IB中,我检查了视图是否会自动调整,其中的组件(UIScrollView和一些UILabels)将正确调整。
任何人都可以帮我解决为什么子视图没有响应。?
答案 0 :(得分:5)
我找到了我朋友的答案......
我正在使用
将子视图添加到视图中[mainView.view.window addSubview detailView.view];
然而,这是将它添加到窗口而不是视图,因为窗口只将旋转事件传递给一个视图控制器,我将我的子视图放在错误的位置。 相反,我将其更改为......
[mainView.view addSubview detailView.view];
哪个有效! 只需要在旋转时添加用于调整子视图大小的代码即可。
在此查看更多信息:http://developer.apple.com/iphone/library/qa/qa2010/qa1688.html
答案 1 :(得分:0)
不确定,但AFAIK一次只有一个UIViewController处于活动状态(就接收来自UIKit的事件而言)。你的第二个视图控制器是通过-presentModalViewController推送的:动画:?如果没有,您可能需要将-willRotateToInterfaceOrientation:方法(也可能是其他方法)从接收事件的方法代理到另一个方法。