UIViewController没有意义。方法没有调用

时间:2010-05-27 10:01:14

标签: uiviewcontroller screen-orientation

问候,

这个问题似乎确实是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)应该......在创建视图控制器时调用一次,然后返回“YES”。但之后没有其他方法被调用!

所以我从头开始使用空白模板(上面的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 ...)... < / p>

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

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

N.B这些项目避免使用nib / xib资源,如果可能的话,希望保持这种状态。

P.Si iPad设备没有我在哪里,所以我无法在设备上测试。很高兴它可以在模拟器上工作。

2 个答案:

答案 0 :(得分:4)

好吧..所以在另一对夫妇头撞墙后,尝试手动做...哈利路亚......

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

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

和set(void)应该......返回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。我还需要“捕捉”方向事件并自己处理......

对于想要知道原因的纯粹主义者?我不知道或不明白为什么,对不起......从理论上说它应该有效,但实际上并没有。

答案 1 :(得分:0)

我遇到很多问题,didRoateToInterfaceOrienataion并不总是被调用。始终调用shouldRotateToInterfaceOrientation但有时无条件状态栏将旋转为横向但视图控制器不会,并且didRotateTo ...将不会被调用。我尝试重写NavigationController以支持didRotateTo ..但我不希望NavigationController中的所有视图都支持旋转。

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

http://developer.apple.com/library/ios/#qa/qa1688/_index.html