【发布时间】:2011-02-20 13:41:27
【问题描述】:
当我正在开发的应用通过 Ad-Hoc 通过 iTunes 安装或直接构建到设备时,在第一次启动时,我的应用中唯一响应方向变化的视图控制器不会收到调用 shouldAutorotateToInterfaceOrientation: 并传入一个横向参数;调试表明它只被称为肖像。每次后续启动的行为都符合我的预期——也就是说,有对 shouldAutorotateToInterfaceOrientation: 的调用同时使用横向和纵向参数。在 iPhone 模拟器、iPhone 和 iPod touch 上都可以看到这种确切的行为。
所以我的问题是:为什么第一次启动应用程序时的方向通知会不同于后续每次启动时的方向通知?我是否误以为除了回复 shouldAutorotateToInterfaceOrientation: 之外,我无法控制方向变化?
在有问题的 ViewController 内部:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 返回是; }在viewDidLoad 和viewDidUnload 内部我(分别)得到:
2010 年 7 月 6 日更新:
仍然没有解决问题的运气。我暂时放弃了这个问题,然后又回到了它,但在完全不同的情况下仍然看到了这个问题。有人吗?
2010 年 7 月 13 日更新:
来自苹果的View Controller Programming Guide:
"...窗口对象完成了与更改当前方向相关的大部分工作。[...] 具体来说,它与根视图最近添加到或显示在窗口中的视图控制器一起使用. 换句话说,window 对象只适用于其视图显示的最前面的视图控制器..."
我在第一次启动时将根视图控制器添加到窗口中,与随后的每次启动相比,我认为这可能与此有关。不过,我还没有追溯到这里……只是一个想法。
在本次更新时,这件事已经获得了大约 175 次浏览……甚至没有人提出最遥远的晦涩建议?来吧,把东西扔出去。在这一点上,我愿意接受任何猜测或建议。我不在乎它是否愚蠢地晦涩难懂或可能无关紧要。
【问题讨论】:
-
我在 UI 方向上遇到过各种各样的问题,并且看到很多报告说它在不同的版本中得到了修复。您要链接哪些库?也许尝试以后的库,看看是否更好。
-
iPhone OS 3.0 并链接到 i996.photobucket.com/albums/af85/jtrim/… 我将尝试增加我的构建目标,看看它是如何进行的
-
您不需要在视图控制器中调用 begin/endGeneratingDeviceOrientationNotifications。 shouldAutorotateToInterfaceOrientation 将在不这样做的情况下被调用。
-
是的,我知道这没有必要,但我只是把它放在那里看看发生了什么,我认为很有可能有人会建议在黑暗中拍摄输入答案,所以我把它包括在这里。
-
我增加了构建目标,但没有看到任何变化。
标签: iphone notifications orientation autorotate