当我正在开发的应用程序通过 iTunes 通过 Ad-Hoc 安装或直接构建到设备时,第一次启动时,我的应用程序中唯一响应方向变化的视图控制器不会收到调用shouldAutorotateToInterfaceOrientation:
with传入的景观参数;调试表明它只被称为肖像。每次后续启动的行为都符合我的预期——也就是说,有对shouldAutorotateToInterfaceOrientation:
横向和纵向参数的调用。在 iPhone 模拟器、iPhone 和 iPod touch 上可以看到这种确切的行为。
所以我的问题是:为什么第一次启动应用程序的方向通知会不同于每次后续启动的方向通知?我是否误以为我无法控制除了响应之外的方向变化shouldAutorotateToInterfaceOrientation:
?
在有问题的 ViewController 内部:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 返回是; }
在里面,viewDidLoad
我viewDidUnload
有(分别):
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];和
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
2010 年 7 月 6 日更新:
仍然没有运气解决问题。我暂时放弃了这个问题,然后又回到了这个问题上,但在完全不同的情况下仍然看到了这个问题。任何人?
2010 年 7 月 13 日更新:
从 Apple 的View Controller Programming Guide:
“...窗口对象完成了与更改当前方向相关的大部分工作。[...] 具体来说,它与根视图最近添加到窗口或在窗口中呈现的视图控制器一起工作。在其他方面换句话说,窗口对象仅适用于显示视图的最前面的视图控制器......”
与每次后续启动相比,我在第一次启动时将根视图控制器添加到窗口的方式不同,所以我认为这可能与此有关。不过,我还没有追溯到这里……只是一个想法。
在本次更新时,这件事已经获得了大约 175 次浏览……甚至没有人提出最遥远的晦涩建议?来吧,把东西扔出去。在这一点上,我愿意接受任何猜测或建议。我不在乎它是否愚蠢地晦涩难懂或可能无关紧要。