4

问候,

这个问题似乎确实是 iphone SDK 世界中一个正在进行的传奇......所以这是我的贡献......

从同一个模板有两个独立的项目......一个半工作,另一个根本没有......请让我解释我的步骤......

使用这个基本的 GL ES 模板 //iphonedevelopment.blogspot.com/2008/12/opengl-project-template-for-xcode.html 必须整理一些“发布”配置,但除此之外,我需要添加方向一个 GL ES 项目。

我的第一个项目,做了我的东西,然后添加了这些方法....

-(BOOL)shouldAutoRotateToInterfaceOrientation .....   
-(void)willRotateToInterfaceOrientation ....
-(void)didRotateFromInterfaceOrientation ....
-(void)willAnimateRotationToInterfaceOrientation ....

并了解他们在做什么(或在我的情况下试图做什么),(BOOL)应该......在创建视图控制器时被调用一次,并返回“是”。但在那之后,没有其他方法被调用!

所以我从头开始使用一个空白模板(上面的 GL ES 模板)......并添加了支持自动旋转的最小值。但是这次没有一个方法被调用!

所以我调查了.... //developer.apple.com/iphone/library/qa/qa2010/qa1688.html 正如它所说,我首先添加了 GLViewController.view,然后将 GLview 添加为应用程序委托的子视图。没有什么!

然后找到这个 //www.iphonedevsdk.com/forum/iphone-sdk-development/44993-how-determine-ipad-launch-orientation.html 声明启用方向通知

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

然后随后在视图控制器中禁用它们......很有意义......做到了,什么都没有......

我认为通知可能默认打开,因为我不需要在第一个项目中启用它们,但它仍然尝试验证方向(即 (BOOL)shouldAutoRotate...)...

如果有人可以帮助我,将不胜感激,因为这个问题让我发疯。提前致谢。

代码可以在这里找到... http://rapidshare.com/files/392053688/autoRotation.zip

NB 这些项目避免使用 nib/xib 资源,如果可能的话,希望保持这种方式。

PS iPad 设备不在我所在的位置,所以我还不能在设备上进行测试。在模拟器上工作会很好。

4

2 回答 2

4

好的..所以在另一对夫妇的头撞到墙上之后,尝试手动进行......哈利路亚......

所以这是结果...添加这两行,以便在创建视图控制器时调用它们...即在 -(void)loadView 或等效项中

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selectot(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];

并设置 (void)should.... 返回 YES

-(void)shouldRotateToInterfaceOrienation
{
return YES;
}

移除所有..

-(void)willRotateToInterfaceOrientation ....
-(void)didRotateFromInterfaceOrientation ....
-(void)willAnimateRotationToInterfaceOrientation ....

这些不需要...

然后添加一个名为 didRotate 的方法

-(void)didRotate:(NSNotification*)notification
{
UIDeviceOrientation oreo = [[UIDevice currentDevice] orientation];
// oreo is our new orientation!
}

基本上,问题是我做了一半的尝试让它与 beginGeneratingDeviceOrientationNotifications 添加一起工作。我还需要“捕获”定向事件并自己处理它们......

对于想知道为什么的纯粹主义者?我不知道或不明白为什么,抱歉......理论上它应该有效,但实际上没有。

于 2010-05-27T11:26:56.167 回答
0

didRoateToInterfaceOrienataion 并不总是被调用,我遇到了很多麻烦。shouldRotateToInterfaceOrientation 总是被调用,但有时状态栏会无缘无故地旋转到横向,但视图控制器不会,并且 didRotateTo... 不会被调用。我尝试覆盖 NavigationController 以支持 didRotateTo.. 但我不希望 NavigationController 中的所有视图都支持旋转。

最后我确定的是,支持旋转的视图之前的视图也必须支持旋转。你会认为问题只会发生在以前的视图上,但不知何故问题消失了,这是唯一的变化。

还有这个http://developer.apple.com/library/ios/#qa/qa1688/_index.html

于 2011-11-22T23:50:57.040 回答