【发布时间】:2010-10-21 16:25:31
【问题描述】:
我有一个相当简单的拆分视图应用程序,它改编自 iPhone 代码。主要功能是在与 iPhone 和 iPad 特定类继承和扩充代码的共享类中。 iPad 应用程序中使用的所有类都有以下内容:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // 重写以允许任何方向。 返回是; }主视图控制器由 UIToolbar 和 UITableView 组成。在每个阶段小节 2 处正确响应旋转。如果我从这个视图显示一个模态对话框:
navigationController = [[UINavigationController alloc] initWithRootViewController:tvc]; navigationController.modalPresentationStyle = UIModalPresentationFormSheet; [self presentModalViewController:navigationController Animation:NO];一切都按预期工作,包括旋转设备,直到我以任何方式关闭对话框:
[自我dismissModalViewControllerAnimated:是];此时我的主视图旋转了 90 度。我查看了 nib 文件中的设置,一切似乎都很好。有什么建议吗?左侧 UITableView 呈现的模态对话框不存在此问题。
额外问题:
我发现左侧视图显示的模态对话框确实存在故障。但只有一个。如果它在纵向模式下由弹出视图呈现并且设备被旋转,你会得到一个相当令人印象深刻的图形故障,因为它永远旋转出视图!
【问题讨论】:
-
我快速打开的拆分视图应用程序的外壳没有显示问题,所以我会比较和对比,找到解决方案后会发回。
-
设置断点和单步执行表明当模态视图控制器出现时,每个显示的视图都会调用 shouldAutorotatetoInterfaceOrientation。当视图没有旋转时,这看起来非常奇怪。
-
注意 - 上面提到的“奇怪”行为似乎是正常的。我仍然认为这很奇怪;为什么在设备不旋转时会进行这些调用?我的应用程序的布局是主显示窗口由一个 xib 组成,其中包含一个 UIView(带有 UIToolbar 和 UITableView)和一个 UITableViewController。这一切都通过IB正常链接。我在其他地方读到,在视图控制器中包含视图控制器是一个非常愚蠢的想法,所以我将把代码合并为一个。有一个历史原因它是分开的,但它本质上是:简单 + 懒惰。
标签: ipad modal-dialog orientation landscape uisplitviewcontroller