0

简单的 iPad 应用程序。

应用加载并显示由 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 和一些 UILabel)会正确调整。

谁能帮我弄清楚为什么子视图没有响应。?

4

2 回答 2

5

我从我的一个朋友那里找到了答案...

我正在使用将子视图添加到视图中

[mainView.view.window addSubview detailView.view];

但是,这是将其添加到窗口而不是视图,并且由于窗口仅将旋转事件传递给一个视图控制器,因此我将子视图放在了错误的位置。相反,我将其更改为...

[mainView.view addSubview detailView.view];

哪个有效!只需添加代码以在旋转时调整子视图的大小即可。

在这里查看更多信息:http: //developer.apple.com/iphone/library/qa/qa2010/qa1688.html

于 2010-08-12T09:01:21.047 回答
0

不确定,但 AFAIK 一次只有一个 UIViewController 处于活动状态(就从 UIKit 接收事件而言)。您的第二个视图控制器是否通过 -presentModalViewController:animated: 推送?如果没有,您可能需要将 -willRotateToInterfaceOrientation: 方法(可能还有其他方法)从接收事件的那个代理到另一个。

于 2010-08-11T10:57:02.250 回答